2012-05-18 34 views
11

En el Event objeto JavaScript, hay algunos valores booleanos para comprobar si se presionan las teclas de modificación:Detectar Alt Gr modificador (Alt Graph) al pulsar la tecla

  • ctrlKey: CTRL clave.
  • altKey: ALT clave.
  • altLeft: ALT tecla izquierda. Solo para IE.
  • altGraphKey: ALTGR tecla. Solo para Chrome/Safari.

Sin embargo, hay algunas cuestiones:

  • IE y Chrome conjunto ctrlKey a true y altKey a true cuando se pulsa el modificador ALTGR.
  • Firefox establece ctrlKey en false y altKey en true cuando presiona el modificador ALTGR, ya que solo se ha presionado ALT.
  • Chrome tiene la propiedad altGraphKey, pero siempre es undefined.

Pregunta: ¿Cómo puedo diferencia entre un ALT +CTRL o un ALTGR pulse la tecla? Especialmente en Chrome.

+0

comportamiento del navegador actual (septiembre de 2013) es diferente. Vea la respuesta a continuación. – Jason

Respuesta

8

La altGraphKey en navegadores web ya no parece existir (a septiembre de 2013) y el comportamiento de Firefox ha cambiado. comportamientos del navegador para la tecla AltGr actualmente parecen ser:

  • Webkit (Chrome) - ctrlKey: true, altKey: verdadera
  • IE 8 - ctrlKey: falso, altKey: verdadera
  • IE 10 - ctrlKey: verdadera, altKey:
  • cierto
  • Mozilla (Firefox) - ctrlKey: true, altKey: verdadera

es decir, todos ellos son actualmente compatibles (aparte de Internet Explorer 8, que se mantiene consistentemente inconsistente).

El siguiente fragmento debería capturar Alt Gr, pero no Alt o Ctrl, en navegadores modernos. Tendrá un caso especial para IE8 sin embargo:

if (event.ctrlKey && event.altKey) { 
    // Appears to be Alt Gr 
} 
2

Supongo que la tecla ALTGR y la tecla CTRL + ALT son la misma cosa y no hay forma de marcar la diferencia en Javascript. Al presionar ALTGR + e y CTRL + ALT + e, ambos producen el símbolo € (euro) en la configuración de mi teclado/idioma. Hay páginas en línea para verificar los códigos clave. Espero que esto ayude.

+0

Sí, esto fue un error de Google Chrome, en Canary funciona bien, también en Opera y Firefox. Consulte: http://jsfiddle.net/iegik/PpH76/ – iegik

0

de responsabilidad: No tengo un teclado que tiene esta llave, así que no puedo probar a mí mismo, pero la especificación dice que puede utilizar la propiedad key. Esta puede ser una buena solución si solo necesita admitir navegadores que la implementen (al momento de escribir, solo Safari no lo hace). Puede verificar si el valor es "AltGraph".

window.onkeydown = function (e) { 
 
    if (e.key === 'AltGraph') { 
 
    console.log(e.key); 
 
    } 
 
};

+0

No funciona para mí en IE Edge. – zuluk

+0

@zuluk Gracias por la notificación. ¿Puedes confirmar si funciona en otros navegadores? –

+0

En Chrome, tampoco funciona. – zuluk

Cuestiones relacionadas