2009-03-04 36 views
5

Cách xử lý phím tắt toàn cục mạnh nhất cho ứng dụng Web bằng JavaScript là gì (tôi) nên xử lý và trình xử lý sự kiện nào sẽ được gắn vào?Cách xử lý phím tắt mạnh mẽ nhất bằng cách sử dụng JavaScript

Tôi muốn một cái gì đó giống như hệ thống trong Gmail có thể xử lý cả hai phím tắt nhấn phím đơn và cũng có phím tắt với các phím bổ trợ, ví dụ: Ctrl + B vv Mã phải làm việc trong IE 6 cũng như các trình duyệt hiện đại.

Tôi có khung nguyên mẫu có sẵn để sử dụng nhưng không phải jQuery, vì vậy, vui lòng không có câu trả lời dành riêng cho jQuery!

+0

http://www.openjs.com/scripts/events/keyboard_shortcuts/ – James

+0

Tôi sẽ kiểm tra - cảm ơn. Tại sao bạn không đăng câu trả lời? –

Trả lời

5

Thư viện HotKey có sẵn trong gói điều khiển LivePipe hoạt động với Prototype và tương thích với IE.

http://livepipe.net/extra/hotkey

+0

Tôi sẽ chấp nhận câu trả lời của bạn vì đây trông giống như những gì tôi đang tìm kiếm và bởi vì có rất nhiều nội dung thú vị khác trên trang web đó, vì vậy cảm ơn! –

+0

Được cảnh báo, HotKey dường như chấp nhận các kết hợp nếu các biến tố không xác định được nhấn (ví dụ: ctrl được chỉ định + a, nhấn ctrl + shift + a, ctrl + a được phát hiện). – eyelidlessness

+0

Nó cũng sẽ được tốt đẹp nếu nó phát hiện OS X và thay thế ctrl với cmd/meta. – eyelidlessness

3

Điều tôi sẽ làm là đính kèm các sự kiện onKeyUp vào tài liệu.body. Sau đó, trong trình xử lý sự kiện này, tôi sẽ sử dụng phương thức Element.fire để kích hoạt sự kiện tùy chỉnh. Mặc dù bước này là tùy chọn, nó sẽ giúp tách bộ xử lý sự kiện khỏi hành động được thực hiện và bạn có thể sử dụng cùng một trình xử lý sự kiện tùy chỉnh từ một sự kiện nhấn nút.

$(document.body).observe("keyup", function() { 
    if(/* key + modifier match */) { 
     $(document.body).fire("myapp:mycoolevent"); 
    } 
}); 

$(document.body).observe("myapp:mycoolevent", function() { 
    // Handle event. 
}); 

Sau đó, để ràng buộc cùng một sự kiện với một nút bấm:

$(button).observe("click", function() { 
    $(document.body).fire("myapp:mycoolevent"); 
}); 

Theo như xử lý các phím modifier là có liên quan, kiểm tra this resource (rất cũ, nhưng vẫn có vẻ thích hợp) để được giúp đỡ nhiều hơn nữa .

+0

Keyup có vẻ như có vấn đề. Ít nhất là trên OS X (nhưng tôi tin rằng đó là sự thật trên Windows và hầu hết các WMW Linux), hầu hết các lệnh chính đều được kích hoạt khi nhấn phím. Kỳ vọng này (với việc kiểm tra thích hợp) cũng thực thi một số kỳ vọng nhất định trên các phím tắt: các phím bổ trợ phải là đầu tiên, chỉ một phím có thể in trên mỗi phím tắt. – eyelidlessness

4

JimmyP posted này như một bình luận, nhưng nó xứng đáng được một câu trả lời cho mục đích bầu cử.

http://www.openjs.com/scripts/events/keyboard_shortcuts/

+0

Tôi biết, đó là lý do tại sao tôi hỏi anh ta tại sao anh ta không đăng nó như một câu trả lời. Được thăng hạng. –

+1

Tôi biết, đó là lý do tại sao tôi đăng nó như một câu trả lời. ;) Và tôi đăng nó cộng đồng wiki vì nó không phải là điểm của tôi để kiếm được. – eyelidlessness

2

Ngoài ra còn có thư viện JavaScript mới có tên gọi jwerty, thật dễ dàng để sử dụng và không dựa trên jQuery.

+0

cảm ơn awoodland;) –

6

Chỉ cần nghĩ tôi sẽ ném một thứ khác vào hỗn hợp. Gần đây tôi đã phát hành một thư viện có tên là Mousetrap. Hãy khám phá tại số http://craig.is/killing/mice

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