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


14

Tengo un par de décadas de experiencia usando 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 anularlos con Javascript. Por ejemplo, uno de ellos hace controlBinsertar 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 reasignar las combinaciones de teclas estándar de OS X?


No conozco ninguna forma general de hacerlo, pero podría usar GreaseKit para deshabilitar los atajos de ADM. Consulte ¿Hay alguna forma de deshabilitar las teclas de acceso rápido? - Meta Stack Overflow .
Lri

Gracias por el enlace! Es frustrante ver que piensan que está bien solo porque la gente no se quejó lo suficiente. (He estado usando sitios SE durante años y no me di cuenta de que tenía que comenzar a quejarme el día 1 para que mi voz se escuchara). Sin embargo, dudo en agregar extensiones de navegador web desde la primera parte de cualquier diagnóstico de problema del navegador web es "deshabilitar todas las extensiones".
Ken

1
Estoy con Ken Personalmente, no puedo contar cuántas veces he tenido que usar "deshacer" porque mis manos olvidaron que estaba en un sitio de SE: S
ephsmith

Iba a sugerir que podría deshabilitar javascript ... Solucionó su problema, pero creó uno nuevo. Ya no podía publicar comentarios en StackExchange ... = P
daviewales el

1
¿Es esta pregunta sobre el sitio aquí? o sobre deshabilitar javascript en todas partes? Podría moverlo a nuestro meta como informe de error, pero ya hay varias solicitudes para este sitio. meta.stackexchange.com/questions/3245/…
bmike

Respuestas:


7

Aquí está el script de Rob W de meta , actualizado para bloquear solo cntrl- * y corregido para que funcione con NinjaKit, que es una extensión de 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);
    }
})();



1

Ha pasado un tiempo desde que lo usé, pero el servidor proxy Privoxy tiene la función de modificar javascript para cambiar el comportamiento. Si está dispuesto a ejecutar un servidor proxy, esa es una opción.

Miré (aunque no exhaustivamente), y no vi un complemento de navegador que reescribiera 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.

Quizás haya una implementación más moderna en forma de un complemento de navegador que proporcione una característica similar, pero Privoxy solía funcionar bien para este caso de uso.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.