2010-06-11 10 views
6

Gần đây tôi phát hiện ra rằng các trình duyệt khác nhau xử lý các sự kiện onclick cách khác nhau khi các phím kiểm soát hay phím Shift được ép. Họ phân tách tương tự về hành vi cho các liên kết sau bằng cách nhấp vào nút chuột giữa.Ctrl hoặc Shift hiệu ứng trên 'sự kiện onclick` của một thẻ neo trong mỗi trình duyệt

Với liên kết sau:

<a href="http://www.example.com/" onclick="alert('onclick');">go to example.com</a> 

onclick hỗ trợ trình duyệt bảng

Mouse Keyboard  Chrome Firefox Safari Opera  IE5.5  IE6  IE7  IE8  IE9  

Left  None   yes  yes  yes  yes  yes  yes  yes  yes  yes 
Left  Ctrl   yes  yes  yes  yes  ?   yes  no  no  ? 
Left  Shift   yes  yes  yes  yes  ?   yes  yes  yes  ? 
Middle None   yes  no  yes  no  ?   N/A  no  no  ? 

Ai đó có thể vui lòng điền vào dấu hỏi đối với tôi? Cũng thế; Tôi tự hỏi liệu hành vi có khác nhau đối với mỗi phiên bản của Chrome, Firefox, Safari và Opera hay không.

Tìm một mẫu lôgíc trong hành vi này thậm chí còn đẹp hơn, nhưng tôi không nghĩ có một điều, thật không may. :)

Trả lời

2

Xem my answer cho câu hỏi liên quan.

Điều này là do "hành vi mong đợi" khi người dùng sử dụng các nút bàn phím sửa đổi lần nhấp - người dùng mong đợi Ctrl + Nhấp vào liên kết để mở liên kết đó trong tab hoặc cửa sổ mới. Các khoảng trống tại Microsoft đã quyết định rằng lý do duy nhất mà người dùng sẽ Ctrl + nhấp vào vì họ đã mong đợi hành vi đó, do đó, các nhấp chuột như vậy không kích hoạt sự kiện onclick trong Internet Explorer.

+0

BTW: Tôi không có ý định thay đổi hành vi của trình duyệt web. Tôi chỉ cần đo lường các nhấp chuột thương mại (thông qua một số thư viện JavaScript). Tôi đã làm việc này cho IE7 và IE8 thông qua trình xử lý sự kiện. Nhưng tôi tò mò về hành vi của IE5.5 và IE9. Ngoài ra; kể từ khi duyệt web theo thẻ ngày càng trở nên phổ biến (cũng thông qua các nhấp chuột phải). Vì vậy, một ngày nào đó, chúng tôi sẽ phải chuyển sang phương thức chuyển hướng. – Erik