2013-07-25 18 views
9

Miałem grać z tym script.Dlaczego Alt Gr ma taki sam kod klucza jak Ctrl?

I zauważyłem, że KeyCode Alt Gr „s jest w IE10 i 17 i 18 w Chrome?

Czy ktoś może wyjaśnić, dlaczego nie jest to (lub zupełnie nowy numer) i dlaczego dostaję dwa wyskakujące okienka w Chrome?

Herezje kod:

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; 
    } 
} 

To nie jest mój kod, Właśnie natknąłem się na niego.

EDIT: Posiadanie bardziej bawić wierzę Alt Gr oznacza Ctrl + Alt w tym samym czasie, jak pewne rzeczy, które wymagają Alt Gr jak é również pracować z Ctrl + Alt.

+8

'' CTRL' AltGr' === + 'ALT', choć po swoją edit wygląda wiesz, że już. Wygląda na to, że Chrome uruchamia oba naciśnięcia, naciskając "AltGr". – Teemu

+1

To ciekawe, jak chrom nie mówi "zaznacz to pole, aby zapobiec tworzeniu wielu okien dialogowych" – Adam

+0

To inne źródło, które tworzy alert. Jeśli dwukrotnie naciśniesz ten sam klucz, otrzymasz to pole wyboru. – Teemu

Odpowiedz

3

Problem polega na tym, że alert zatrzymuje wykonywanie kodu, więc drugie onkeyup nie jest wywoływane. Zmieniając funkcję

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; 
    } 
} 

widzimy, że zarówno Alt i Ctrl sprawdzony.

Testowane z Firefox i IE 22 9.

Powiązane problemy