¿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 related posts
  • 2 responses to “¿Es posible inhabilitar las combinaciones de keys JavaScript personalizadas en Safari?”

      Zanson said:

      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); } })(); 
      Zanson said:

      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).