2012-05-18 37 views
11

Trong các đối tượng javascript Event, có một số giá trị boolean để kiểm tra xem phím modifier được ép:Detect Alt Gr (Alt Graph) modifier khi nhấn phím

  • ctrlKey: CTRL then chốt.
  • altKey: ALT khóa.
  • altLeft: ALT phím bên trái. Chỉ dành cho IE.
  • altGraphKey: ALTGR khóa. Chỉ dành cho Chrome/Safari.

Tuy nhiên, có một số vấn đề:

  • IE và Chrome thiết ctrlKey để truealtKey để true khi bạn nhấn modifier AltGr.
  • Firefox đặt ctrlKey thành falsealtKey đến true khi bạn nhấn công cụ sửa đổi ALTGR, vì chỉ ALT được nhấn.
  • Chrome có thuộc tính altGraphKey, nhưng nó luôn là undefined.

Câu hỏi: làm thế nào tôi có thể khác biệt giữa một ALT +CTRL hay một AltGr nhấn phím? Đặc biệt trong Chrome.

+0

hiện hành vi duyệt (tháng 9 năm 2013) là khác nhau. Xem câu trả lời dưới đây. – Jason

Trả lời

8

altGraphKey trong trình duyệt webkit không còn tồn tại (như tại tháng 9 năm 2013) và hành vi của Firefox đã thay đổi. hành vi duyệt cho phím AltGr hiện dường như là:

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

đó là để nói, họ là tất cả hiện phù hợp (ngoài IE8, mà vẫn kiên định không phù hợp).

Đoạn mã sau sẽ bắt Alt Gr - nhưng không phải Alt hoặc Ctrl - trong các trình duyệt hiện đại. Bạn sẽ cần một trường hợp đặc biệt cho IE8 tuy nhiên:

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

Tôi đoán phím ALTGR và tổ hợp phím CTRL + ALT là điều tương tự và không có cách nào để tạo sự khác biệt trong Javascript. Nhấn ALTGR + e và CTRL + ALT + e đều tạo ra ký hiệu € (euro) trên thiết lập bàn phím/ngôn ngữ của tôi. Có các trang trực tuyến để kiểm tra mã phím. Hi vọng điêu nay co ich.

+0

Vâng, đây là lỗi của Google Chrome, trong Canary nó hoạt động tốt, trong Opera và Firefox - quá. Kiểm tra: http://jsfiddle.net/iegik/PpH76/ – iegik

0

Disclaimer: Tôi không có một bàn phím có phím này, vì vậy tôi không thể kiểm tra bản thân mình, nhưng spec nói rằng có thể sử dụng key tài sản. Đây có thể là một giải pháp tốt nếu bạn chỉ cần hỗ trợ các trình duyệt thực hiện nó (tại thời điểm viết bài, chỉ Safari không có). Bạn có thể kiểm tra nếu giá trị là "AltGraph".

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

+0

Không hoạt động với tôi trong IE Edge. – zuluk

+0

@zuluk Cảm ơn bạn đã thông báo. Bạn có thể xác nhận nếu nó hoạt động trong bất kỳ trình duyệt nào khác không? –

+0

Trong Chrome nó cũng không hoạt động. – zuluk

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