2013-07-25 35 views
9

Tôi đã chơi với số này script.Tại sao Alt Gr có cùng mã khóa như Ctrl?

Và tôi nhận thấy rằng keyCode Alt Gr 's là trong IE10 và 17 VÀ 18 trong Chrome?

Ai đó có thể giải thích lý do tại sao số này không phải là (hoặc một số hoàn toàn mới) và tại sao tôi nhận được hai cửa sổ bật lên trong Chrome?

Heres mã:

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

Đây không phải là mã của tôi, Tôi chỉ cần stumbled khi nó.

EDIT: Có nhiều của một vở kịch xung quanh tôi tin Alt Gr nghĩa Ctrl + Alt cùng một lúc, như một số việc mà cần phải Alt Gr như é cũng làm việc với Ctrl + Alt.

+8

'AltGr' ===' CTRL' + 'ALT', mặc dù sau khi chỉnh sửa của bạn giống như bạn đã biết. Có vẻ như Chrome đã kích hoạt cả hai lần nhấn, khi nhấn 'AltGr'. – Teemu

+1

Thật thú vị khi chrome không nói "đánh dấu vào ô này để ngăn trang tạo nhiều hộp thoại" – Adam

+0

Đó là một nguồn khác tạo cảnh báo. Nếu bạn nhấn cùng một phím hai lần, bạn sẽ nhận được hộp kiểm. – Teemu

Trả lời

3

Vấn đề là việc alert tạm dừng thực thi mã, do đó, onkeyup thứ hai không được gọi. Bằng cách thay đổi các chức năng để

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

chúng ta có thể thấy rằng cả hai AltCtrl được gọi.

Đã thử nghiệm với Firefox 22 và IE 9.

Các vấn đề liên quan