2012-05-18 12 views
11

Nel Event oggetto JavaScript, ci sono alcuni valori booleani per verificare se si premono i tasti modificatori:Rileva Alt Gr modificatore (Alt Graph) sulla pressione di un tasto

  • ctrlKey: CTRL chiave.
  • altKey: ALT chiave.
  • altLeft: ALT chiave sinistra. Solo per IE.
  • altGraphKey: ALTGR chiave. Solo per Chrome/Safari.

Tuttavia, ci sono alcuni problemi:

  • IE e Chrome impostato ctrlKey a true e altKey a true quando si preme il modificatore ALTGR.
  • Firefox imposta ctrlKey a false a altKey a true quando si preme il modificatore ALTGR, poiché è stato premuto solo ALT.
  • Chrome ha la proprietà altGraphKey, ma è sempre undefined.

Domanda: Come posso differenza tra un ALT +CTRL o un ALTGR premere il tasto? Specialmente in Chrome.

+0

attuale comportamento del browser (settembre 2013) è diverso. Vedi la risposta qui sotto. – Jason

risposta

8

L'altGraphKey nei browser Webkit non sembra più esistere (come a settembre 2013) e il comportamento di Firefox è cambiato. i comportamenti del browser per la chiave AltGr attualmente sembrano essere:

  • Webkit (Chrome) - ctrlKey: true, altKey: vero
  • IE 8 - ctrlKey: false, altKey: vero
  • IE 10 - ctrlKey: vero, altKey: vero
  • Mozilla (Firefox) - ctrlKey: true, altKey: vero

vale a dire, sono tutti attualmente in linea (a parte IE8, che rimane costantemente incoerente).

Il seguente frammento dovrebbe catturare Alt Gr - ma non Alt o Ctrl - nei browser moderni. Avrete bisogno di un caso speciale per IE8 però:

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

Immagino che il tasto ALTGR e la combinazione di tasti CTRL + ALT siano la stessa cosa e non c'è modo di fare la differenza in Javascript. Premendo ALTGR + e e CTRL + ALT + e entrambi producono il simbolo € (euro) sulla mia tastiera/impostazione della lingua. Ci sono pagine online per verificare i codici chiave. Spero che questo ti aiuti.

+0

Sì, questo era un bug di Google Chrome, in Canary funziona bene, anche in Opera e Firefox. Controlla: http://jsfiddle.net/iegik/PpH76/ – iegik

0

Diniego: Non ho una tastiera che ha questa chiave, quindi non posso testare me stesso, ma le specifiche dice che può utilizzare la proprietà key. Questa potrebbe essere una buona soluzione se hai solo bisogno di supportare i browser che la implementano (al momento della scrittura, solo Safari non lo fa). È possibile verificare se il valore è "AltGraph".

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

+0

Non funziona per me in IE Edge. – zuluk

+0

@zuluk Grazie per la notifica. Puoi confermare se funziona su altri browser? –

+0

Anche in Chrome non funziona. – zuluk

Problemi correlati