2012-02-02 18 views
8

Parece ser una pregunta difícil recurrente, pero todavía no tiene una solución, ni solución para ello:accesskey VS combinación de teclas navegador

¿Hay una manera de interceptar teclas de acceso antes de atajos de teclado?

tengo que usar teclas de acceso en mis favoritos navegador IE y FF, pero no me wa no tener en cuenta los atajos existentes como reservada. De lo contrario, no deja muchas posibilidades (actualmente solo uso números).

Nota: por tecla de acceso, quiero decir el atributo accesskey html.

¿Alguna idea? Las aplicaciones flash pueden hacerlo, ¿qué pasa con JavaScript?


Por ejemplo, aquí es un control accesible:

<button onclick="alert('Hello');" accesskey="F">Alt+F to activate</button> 

Cuando intento activarlo acabo abierta Archivo menú: '(

+2

** NOTA ** No se encontrará con el problema con Firefox desde teclas de acceso se activan con * Shift + Alt + * [clave] y el menú con * Alt + [tecla] *. – sinsedrix

+0

Si usa manipuladores de selección, puede bloquear el comportamiento predeterminado. Con las teclas de acceso, mi experiencia (hace aproximadamente 2 años) es que necesita asegurarse de que no entren en conflicto con las opciones del menú, lo que no es muy factible –

+2

Espero que la respuesta sea no.No quiero que ninguna página web antigua pueda usar mis comandos de teclado. Cuando golpeo * Alt + F *, quiero el menú Archivo. – Umbrella

Respuesta

1

John Resig (el creador de jQuery) ha sido trabajando en un complemento "tecla de acceso directo" para jQuery que debe hacer lo que usted está buscando.

https://github.com/jeresig/jquery.hotkeys

Sé que esto no es una 'pregunta de jQuery', y agregar un marco para algo 'pequeño' no es ideal, pero debería ofrecer una solución. Por otro lado, siempre puedes ver cómo lo hizo en busca de inspiración.

+0

Podría ser una solución jQuery. Leí acerca de este complemento, pero no encaja, ya que el apéndice dice que también se activará el comportamiento predeterminado: "Otros, (IE) le permiten manejar accesos directos integrados, pero agregarán su funcionalidad después de que se haya ejecutado su código " – sinsedrix

0

Esto, obviamente, depende del navegador. Para los "tres grandes":

  • Firefox: accesos directos del menú utilizan Alt, "accesskey" atajos utilizan ShiftAlt, así que no hay conflicto.
  • Google Chrome: ambos tipos de accesos directos usar Alt, y accesos directos del menú tienen prioridad, pero , si hay un conflicto "accesskey" atajos utilizan ShiftAlt, por lo que todavía son accesibles. Ver mi respuesta al Disable Alt functions (shortcuts) in Google Chrome para un ejemplo.
  • Internet Explorer: ambos tipos de accesos directos usan Alt, y los accesos directos "accesskey" tienen prioridad, justo lo que quiere :-).

En resumen: No, no hay manera de modificar el comportamiento de navegador en Javascript (y podría decirse que sería una vulnerabilidad de seguridad), pero todos los navegadores tienen maneras de manejar estos conflictos.

+0

¿Y por qué está en "tres grandes" IE, no Opera? : o) – Legionar

+0

@Legionar: para ser sincero, porque no tenía una instalación de Opera a la mano (al igual que con Konqueror, Safari, navegador de Android ...) :-). No dude en editar la respuesta si tiene información en otros navegadores. – sleske

Cuestiones relacionadas