¿Puedo asegurarme de que los scripts del navegador no atrapen los comandos del teclado?

¿Es posible modificar Safari para garantizar combinaciones de teclas de comando como Ho Lir a Safari en lugar del contenido de la ventana de Safari?

Esto me sucede con más frecuencia en este sitio porque la ventana del editor (como donde estoy escribiendo ahora) captura estas pulsaciones de teclas para hacer encabezados y enlaces, pero en general, parece un agujero de seguridad que permite que los sitios capturen las pulsaciones de teclas de comandos. .

Tenga en cuenta que estoy buscando una manera de hacer esto sin deshabilitar JavaScript por completo.

Por lo que sea que valga, dirijo a Mountain Lion.

Puede usar NinjaKit para deshabilitar los accesos directos que se usan en los sitios de Stack Exchange. Consulte apple.stackexchange.com/questions/60587 y meta.stackexchange.com/questions/2980 .
Eso es increíble, @LauriRanta, y ayuda con este problema específico, pero como un agujero de seguridad general, me encantaría encontrar una forma de evitar que los sitios web maliciosos atrapen ⌘W o ⌘Q sin simplemente deshabilitar JavaScript.
Agregué la etiqueta de seguridad. Porque saber qué parte de una aplicación está leyendo ( escuchando ) el teclado es una característica básica de seguridad. Si la barra de menú mostrara algún cambio en el oyente del teclado , muchos ataques basados ​​en rastreadores harían como cucarachas cuando enciendas la luz.
@DanielLawson ¿Ayudaría esta extensión de Safari de código abierto javascript-blocker.toggleable.com

Respuestas (1)

La única forma segura de evitar que JavaScript intercepte la entrada del teclado es deshabilitar JavaScript en el navegador.

Entiendo que le gustaría dejar JavaScript activado, pero está diseñado para pasar el control casi total de las pulsaciones de teclas sin procesar al navegador y no a la aplicación una vez que el sistema operativo le entrega los datos de entrada. Esto significa que necesitaría una solución de código específica para cada implementación de filtrado de teclado en cada página/sitio potencialmente individual para garantizar que los acordes de teclas arbitrarios como el Comando H se envíen a Safari en lugar de a JavaScript.

Consulte estos enlaces para obtener una descripción general de cómo se manejan las pulsaciones de teclas:

El último enlace es un probador para mostrarle los eventos sin procesar y verá que incluso un breve ⌘Q puede ser atrapado por JavaScript si el desarrollador del sitio web así lo desea.

El controlador del teclado es parte del sistema operativo, por lo que el sistema operativo pasa las pulsaciones de teclas al navegador, que pasa las pulsaciones de teclas al contenido web, que aparentemente luego decide qué pulsaciones de teclas devolver al navegador y/o al sistema operativo...
Probablemente sea incluso más complicado que eso con las complejidades del espacio del kernel/espacio del usuario/API y marco.