2013-07-25 14 views
9

Stavo giocando con questo script.Perché Alt Gr ha lo stesso codice chiave di Ctrl?

e ho notato che KeyCode Alt Gr s' è in IE10 e 17 E 18 in Chrome?

Qualcuno può spiegare perché non è il suo (o un numero completamente nuovo) e perché ottengo due popup in Chrome?

Heres il codice:

document.onkeyup = KeyCheck; 
function KeyCheck(e) { 
    var KeyID = (window.event) ? event.keyCode : e.keyCode; 
    alert(KeyID); 
    switch (KeyID) 
    { 
     case 18: 
      document.Form1.KeyName.value = "Alt"; 
      break; 
     case 17: 
      document.Form1.KeyName.value = "Ctrl"; 
      break; 
    } 
} 

Questo non è il mio codice, ho solo inciampato su di esso.

EDIT: Avere più di un gioco intorno Credo Alt Gr significa Ctrl + Alt, allo stesso tempo, come alcune cose che richiedono Alt Gr come é anche lavorare con Ctrl + Alt.

+8

'' AltGr' === CTRL' + 'ALT', anche se dopo la modifica si presenta come lo sai già. Sembra che i trigger di Chrome siano stati premuti entrambi, quando si preme 'AltGr'. – Teemu

+1

È interessante il modo in cui chrome non dice "spunta questa casella per impedire alla pagina di creare più finestre di dialogo" – Adam

+0

È un'origine diversa che crea l'avviso. Se premi due volte la stessa chiave, otterrai la casella di controllo. – Teemu

risposta

3

Il problema è che il alert interrompe l'esecuzione del codice, quindi il secondo onkeyup non viene chiamato. Modificando la funzione di

function KeyCheck(e) 
{ 
    var KeyID = (window.event) ? event.keyCode : e.keyCode; 
    switch(KeyID) 
    { 
    case 18: 
     document.Form1.KeyName.value = document.Form1.KeyName.value+"Alt"; 
     break; 
    case 17: 
     document.Form1.KeyName.value = document.Form1.KeyName.value+"Ctrl"; 
     break; 
    } 
} 

possiamo vedere che sia Alt e Ctrl vieni chiamato.

testato con Firefox 22 e IE 9.