¿Es posible inhabilitar las combinaciones de keys JavaScript personalizadas en Safari?

Tengo un par de décadas de experiencia utilizando Emacs, por lo que los Emacs-como keys para la edición de text en Mac OS X son muy agradables. Lamentablemente, algunos sitios web (ahem) optan por anular estos con Javascript. Por ejemplo, uno de ellos hace que el control B inserte el text **strong text** , en lugar de volver un carácter.

¿Hay alguna manera de hacer que Safari ignore las combinaciones de keys JavaScript que tratan de reasignar las combinaciones de keys estándar de OS X?

  • No puedo desinstalar Homebrew. ¿Cómo puedo encontrar y eliminar todos mis files de Homebrew y volver a instalarlo de nuevo?
  • ¿Cuál es el equivalente de "hacer shell script" con automatizaciones javascript? (Yosemite)
  • ¿Puedo asegurar que los commands del keyboard no queden atrapados por los scripts del browser?
  • WhatsApp Web en Fluid lanza una exception de JavaScript
  • ¿Hay algo similar al sistema de guiones Greasemonkey para un browser en iOS?
  • ¿Cómo puedo abrir la console javascript en Safari 6?
  • Deshabilitar Trackpad y keyboard temporalmente
  • No se puede asignar acceso directo al service
  • Mavericks actualización rompió atajo de keyboard para cambiar de espacio
  • Cómo deshabilitar keys compuestas en Mac OS X
  • Windows en un iMac: incapaz de cambiar los layouts del keyboard
  • ¿Cómo puedo eliminar la acción 'Salir' de una aplicación en OSX
  • 2 Solutions collect form web for “¿Es posible inhabilitar las combinaciones de keys JavaScript personalizadas en Safari?”

    Aquí está el guión de Rob W de meta , actualizado sólo para bloquear cntrl- * y fijo para que funcione con NinjaKit, que es una extensión safari para ejecutar scripts de usuario.

    NinjaKit: https://github.com/os0x/NinjaKit

    Guión:

     // ==UserScript== // @name Cya WMD shortcuts // @namespace Rob W // @version 1.0 // @include http://apple.stackexchange.com/* // @include http://stackoverflow.com/* // @include http://superuser.com/* // @include http://meta.superuser.com/* // @include http://serverfault.com/* // @include http://meta.serverfault.com/* // @include http://askubuntu.com/* // @include http://meta.askubuntu.com/* // @include http://*.stackexchange.com/* // @include http://answers.onstartups.com/* // @include http://meta.answers.onstartups.com/* // @include http://stackapps.com/* // @run-at document-end // @grant none // ==/UserScript== (function () { var p = document.getElementById('wmd-input'); console.log("wmd-input:" + p); if (p) { p = p.parentNode; function ignore(e) { if (e.ctrlKey) { e.stopPropagation(); } } p.addEventListener('keydown', ignore, true); p.addEventListener('keypress', ignore, true); p.addEventListener('keyup', ignore, true); } })(); // == UserScript == // ==UserScript== // @name Cya WMD shortcuts // @namespace Rob W // @version 1.0 // @include http://apple.stackexchange.com/* // @include http://stackoverflow.com/* // @include http://superuser.com/* // @include http://meta.superuser.com/* // @include http://serverfault.com/* // @include http://meta.serverfault.com/* // @include http://askubuntu.com/* // @include http://meta.askubuntu.com/* // @include http://*.stackexchange.com/* // @include http://answers.onstartups.com/* // @include http://meta.answers.onstartups.com/* // @include http://stackapps.com/* // @run-at document-end // @grant none // ==/UserScript== (function () { var p = document.getElementById('wmd-input'); console.log("wmd-input:" + p); if (p) { p = p.parentNode; function ignore(e) { if (e.ctrlKey) { e.stopPropagation(); } } p.addEventListener('keydown', ignore, true); p.addEventListener('keypress', ignore, true); p.addEventListener('keyup', ignore, true); } })(); // @version 1.0 // ==UserScript== // @name Cya WMD shortcuts // @namespace Rob W // @version 1.0 // @include http://apple.stackexchange.com/* // @include http://stackoverflow.com/* // @include http://superuser.com/* // @include http://meta.superuser.com/* // @include http://serverfault.com/* // @include http://meta.serverfault.com/* // @include http://askubuntu.com/* // @include http://meta.askubuntu.com/* // @include http://*.stackexchange.com/* // @include http://answers.onstartups.com/* // @include http://meta.answers.onstartups.com/* // @include http://stackapps.com/* // @run-at document-end // @grant none // ==/UserScript== (function () { var p = document.getElementById('wmd-input'); console.log("wmd-input:" + p); if (p) { p = p.parentNode; function ignore(e) { if (e.ctrlKey) { e.stopPropagation(); } } p.addEventListener('keydown', ignore, true); p.addEventListener('keypress', ignore, true); p.addEventListener('keyup', ignore, true); } })(); // @ run-at document-end // ==UserScript== // @name Cya WMD shortcuts // @namespace Rob W // @version 1.0 // @include http://apple.stackexchange.com/* // @include http://stackoverflow.com/* // @include http://superuser.com/* // @include http://meta.superuser.com/* // @include http://serverfault.com/* // @include http://meta.serverfault.com/* // @include http://askubuntu.com/* // @include http://meta.askubuntu.com/* // @include http://*.stackexchange.com/* // @include http://answers.onstartups.com/* // @include http://meta.answers.onstartups.com/* // @include http://stackapps.com/* // @run-at document-end // @grant none // ==/UserScript== (function () { var p = document.getElementById('wmd-input'); console.log("wmd-input:" + p); if (p) { p = p.parentNode; function ignore(e) { if (e.ctrlKey) { e.stopPropagation(); } } p.addEventListener('keydown', ignore, true); p.addEventListener('keypress', ignore, true); p.addEventListener('keyup', ignore, true); } })(); // @grant none // ==UserScript== // @name Cya WMD shortcuts // @namespace Rob W // @version 1.0 // @include http://apple.stackexchange.com/* // @include http://stackoverflow.com/* // @include http://superuser.com/* // @include http://meta.superuser.com/* // @include http://serverfault.com/* // @include http://meta.serverfault.com/* // @include http://askubuntu.com/* // @include http://meta.askubuntu.com/* // @include http://*.stackexchange.com/* // @include http://answers.onstartups.com/* // @include http://meta.answers.onstartups.com/* // @include http://stackapps.com/* // @run-at document-end // @grant none // ==/UserScript== (function () { var p = document.getElementById('wmd-input'); console.log("wmd-input:" + p); if (p) { p = p.parentNode; function ignore(e) { if (e.ctrlKey) { e.stopPropagation(); } } p.addEventListener('keydown', ignore, true); p.addEventListener('keypress', ignore, true); p.addEventListener('keyup', ignore, true); } })(); // == / UserScript == // ==UserScript== // @name Cya WMD shortcuts // @namespace Rob W // @version 1.0 // @include http://apple.stackexchange.com/* // @include http://stackoverflow.com/* // @include http://superuser.com/* // @include http://meta.superuser.com/* // @include http://serverfault.com/* // @include http://meta.serverfault.com/* // @include http://askubuntu.com/* // @include http://meta.askubuntu.com/* // @include http://*.stackexchange.com/* // @include http://answers.onstartups.com/* // @include http://meta.answers.onstartups.com/* // @include http://stackapps.com/* // @run-at document-end // @grant none // ==/UserScript== (function () { var p = document.getElementById('wmd-input'); console.log("wmd-input:" + p); if (p) { p = p.parentNode; function ignore(e) { if (e.ctrlKey) { e.stopPropagation(); } } p.addEventListener('keydown', ignore, true); p.addEventListener('keypress', ignore, true); p.addEventListener('keyup', ignore, true); } })(); (function () { // ==UserScript== // @name Cya WMD shortcuts // @namespace Rob W // @version 1.0 // @include http://apple.stackexchange.com/* // @include http://stackoverflow.com/* // @include http://superuser.com/* // @include http://meta.superuser.com/* // @include http://serverfault.com/* // @include http://meta.serverfault.com/* // @include http://askubuntu.com/* // @include http://meta.askubuntu.com/* // @include http://*.stackexchange.com/* // @include http://answers.onstartups.com/* // @include http://meta.answers.onstartups.com/* // @include http://stackapps.com/* // @run-at document-end // @grant none // ==/UserScript== (function () { var p = document.getElementById('wmd-input'); console.log("wmd-input:" + p); if (p) { p = p.parentNode; function ignore(e) { if (e.ctrlKey) { e.stopPropagation(); } } p.addEventListener('keydown', ignore, true); p.addEventListener('keypress', ignore, true); p.addEventListener('keyup', ignore, true); } })(); if (e.ctrlKey) { // ==UserScript== // @name Cya WMD shortcuts // @namespace Rob W // @version 1.0 // @include http://apple.stackexchange.com/* // @include http://stackoverflow.com/* // @include http://superuser.com/* // @include http://meta.superuser.com/* // @include http://serverfault.com/* // @include http://meta.serverfault.com/* // @include http://askubuntu.com/* // @include http://meta.askubuntu.com/* // @include http://*.stackexchange.com/* // @include http://answers.onstartups.com/* // @include http://meta.answers.onstartups.com/* // @include http://stackapps.com/* // @run-at document-end // @grant none // ==/UserScript== (function () { var p = document.getElementById('wmd-input'); console.log("wmd-input:" + p); if (p) { p = p.parentNode; function ignore(e) { if (e.ctrlKey) { e.stopPropagation(); } } p.addEventListener('keydown', ignore, true); p.addEventListener('keypress', ignore, true); p.addEventListener('keyup', ignore, true); } })(); e.stopPropagation (); // ==UserScript== // @name Cya WMD shortcuts // @namespace Rob W // @version 1.0 // @include http://apple.stackexchange.com/* // @include http://stackoverflow.com/* // @include http://superuser.com/* // @include http://meta.superuser.com/* // @include http://serverfault.com/* // @include http://meta.serverfault.com/* // @include http://askubuntu.com/* // @include http://meta.askubuntu.com/* // @include http://*.stackexchange.com/* // @include http://answers.onstartups.com/* // @include http://meta.answers.onstartups.com/* // @include http://stackapps.com/* // @run-at document-end // @grant none // ==/UserScript== (function () { var p = document.getElementById('wmd-input'); console.log("wmd-input:" + p); if (p) { p = p.parentNode; function ignore(e) { if (e.ctrlKey) { e.stopPropagation(); } } p.addEventListener('keydown', ignore, true); p.addEventListener('keypress', ignore, true); p.addEventListener('keyup', ignore, true); } })(); 

    Ha sido un time desde que lo he utilizado, pero el server proxy Privoxy tiene la característica de modificar javascript para cambiar el comportamiento. Si está dispuesto a ejecutar un server proxy, esa es una opción.

    Miré (aunque no exhaustivamente), y no vi un plugin de browser que reescribió el contenido (xml, html, CSS o javascript) como lo hace privoxy. En la página web de Privoxy, busque el filter js-annoyances. Ahí es donde encontrarás ejemplos de reescritura de javascript.

    Tal vez hay una implementación más moderna en forma de un complemento de browser que ofrece una característica similar, pero privoxy solía funcionar bien para este caso de uso.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).