5

Tôi đã viết một user script mà thực hiện một hoạt động nhất định trên văn bản đã chọn trong một textarea khi nhấn tổ hợp phím CTRL + SHIFT + B.Override phím tắt Chrome trong một kịch bản sử dụng

Việc này được thực hiện bằng cách đăng ký sự kiện keypress cho vùng văn bản và sau đó kiểm tra phím bấm. Để ngăn trình duyệt xử lý tổ hợp phím tôi đang sử dụng phương thức preventDefault() hoạt động tốt trong Firefox (cửa sổ Thư viện không được mở nhưng mã của tôi được thực thi thay thế).

Tuy nhiên, trong Chrome, tổ hợp phím sẽ mở thanh dấu trang và sự kiện keypress thậm chí không được kích hoạt.

Tôi tự hỏi liệu có cách tạo lối tắt như vậy trong Chrome hay không. Nó cần phải làm việc với một usercript - một phần mở rộng thực sự không phải là một lựa chọn vì tôi không muốn duy trì hai "phiên bản" khác nhau cho Firefox và Chrome.

Trả lời

5

Rõ ràng, giao diện người dùng Chrome gây nên tắt của keydown thay vì keypress (This Quirksmode article có thể đề nghị tại sao - keypressphải để bắn khi một nhân vật thực tế đã được chèn).

Vì vậy, thay đổi dòng thích hợp để:

$(document).on('keydown', '.wmd-input', function(e) { 

Dường như làm việc trên cả FF và Chrome.

+0

Thao tác này sẽ ghi đè/tắt phím tắt ban đầu hoặc cả hai đều sẽ kích hoạt? – Patrick

+0

@Patrick, Phụ thuộc. tra cứu 'preventDefault()', 'stopPropagation()', 'stopImmediatePropagation()', v.v. –

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