¿Es posible deshabilitar las combinaciones de teclas Javascript personalizadas en Safari?

14

Tengo un par de décadas de experiencia con Emacs, por lo que las combinaciones de teclas similares a Emacs para la edición de texto en Mac OS X son muy buenas. Desafortunadamente, algunos sitios web (ejem) eligen anular estos con Javascript. Por ejemplo, uno de ellos hace que control B inserte el texto **strong text** , en lugar de retroceder un carácter.

¿Hay alguna forma de hacer que Safari ignore las combinaciones de teclas de Javascript que intentan volver a asignar las combinaciones de teclas estándar de OS X?

    
pregunta Ken 13.08.2012 - 18:11

2 respuestas

7

Aquí está secuencia de comandos de Rob W de meta , actualizado solo para bloquear cntrl- * y corregido para que funcione con NinjaKit, que es una extensión de safari para ejecutar scripts de usuario.

NinjaKit: enlace

Script:

// ==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);
    }
})();
    
respondido por el Zanson 05.05.2013 - 05:18
1

Hace mucho que no lo uso, pero el servidor proxy Privoxy tiene la función de modificar javascript para cambiar el comportamiento. Si estás dispuesto a ejecutar un servidor proxy, esa es una opción.

Lo vi (aunque no de manera exhaustiva) y no vi un complemento del navegador que reescribió el contenido (xml, html, CSS o javascript) como lo hace privoxy. En la página web de Privoxy, busque el filtro js-annoyances. Ahí es donde encontrará ejemplos de reescritura de javascript.

Tal vez haya una implementación más moderna en forma de complemento de navegador que proporcione una función similar, pero privoxy solía funcionar bien para este caso de uso.

    
respondido por el Tim B 02.05.2013 - 14:06

Lea otras preguntas en las etiquetas