2011-11-07 23 views
9

Tôi muốn nhận các sự kiện keydown trên div. Tôi sử dụng phím tắt JQuery. Khá đơn giản.Tôi làm cách nào để có được các sự kiện keydown trên div trong chrome?

Tuy nhiên, nó không hoạt động trên chrome. Để làm việc trên chrome, tôi phải đặt tabindex = 0.

Nếu tôi làm điều này, Chrome đặt đường viền màu cam xấu xí quanh div của tôi.

Có cách nào để thực hiện công việc này trên Chrome mà không có đường viền màu cam xấu xí không?

+0

Tôi đặt câu hỏi cho dù bạn đang đi đúng hướng với điều này. Để có một sự kiện 'keydown', về mặt lý thuyết bạn cần tập trung vào phần tử của mình, nếu không bạn đang keying-down gì? –

+0

Làm cách nào để có sự kiện keydown trên div ??? Tôi nghĩ rằng chỉ có đầu vào văn bản và textareas có thể được keyed xuống – frenchie

Trả lời

16

Sự kiện nhấn phím chỉ được gửi đến phần tử HTML có tiêu điểm. Các yếu tố có thể tập trung khác nhau giữa các trình duyệt, nhưng các yếu tố trong đó thuộc tính tabindex được đặt luôn có thể tập trung vào hầu hết các trình duyệt.

Bạn đã đặt tabindex cho phần tử div sao cho nó có thể lấy nét và có thể nhận sự kiện bàn phím. Vấn đề của bạn là đường viền mặc định của phần tử hiện được tập trung vào Google Chrome.

Để thay đổi đường viền ("đường viền màu cam xấu xí" như bạn đã đề cập), hãy sử dụng lớp CSS giả: sơ đồ thuộc tính tập trung và CSS. Ví dụ sau sẽ xóa đường viền khỏi tất cả các phần tử khi chúng có tiêu điểm:

*:focus 
{ 
    outline: none; 
} 

Hy vọng trợ giúp này.

+1

Chỉ cần một lưu ý rằng cho khả năng tiếp cận, thiết lập ouline: không phổ biến là * không * khuyến khích. Xem http://webaim.org/blog/plague-of-outline-0 và http://www.outlinenone.com – jbyrd

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