2012-01-19 12 views
5

Tôi đang cố gắng theo dõi các nhấp chuột vào liên kết bên ngoài (không sử dụng "trang chuyển hướng").Bắt sự kiện khi theo liên kết

Làm thế nào tôi có thể chụp một sự kiện khi người dùng sau một liên kết, cho dù người sử dụng:

  1. trái nhấp vào liên kết
  2. nhấp chuột phải vào liên kết và mở nó trong một cửa sổ mới
  3. Sử dụng bàn phím để kích hoạt liên kết
  4. Có cách nào khác để kích hoạt liên kết không?

Sự kiện onClick chỉ áp dụng cho sự kiện đầu tiên.

Nếu cài đặt href="javascript:fireEventAndFollowLink()" người dùng sẽ không thể mở liên kết trong cửa sổ mới (2), vì vậy đây không phải là một sự sollution.

Trả lời

9

Một liên kết có thể được kích hoạt trong một số cách (giả sử trình duyệt hiện đại, xem chú thích cuối trang):

  1. Left nhấp
    • Đối <a target="_blank"> hoặc <a target="_new">, trang sẽ được nạp trong một tab mới .
    • Khi người dùng nhấn CTRL, trang sẽ được tải trong tab mới.
    • Khi người dùng nhấn SHIFT, trang sẽ được tải trong một cửa sổ mới.
    • Đối với các giá trị target khác, liên kết có thể được tải trong màn hình hiện tại hoặc một khung khác.
  2. Midde nhấp
    • Trang sẽ được nạp trong một tab mới, không phụ thuộc vào các phím modifier.
  3. Nhấp chuột phải
    Phương pháp này là vô cùng khó khăn, nếu không muốn nói là không thể thực hiện đầy đủ.
    Không thể sử dụng JavaScript để phát hiện trực tiếp tùy chọn nào trong trình đơn ngữ cảnh đã chọn.
    • Khi chọn "Mở liên kết trong mới (tab, cửa sổ)", trang sẽ tải trong tab mới, cửa sổ.
    • Khi không lựa chọn bất kỳ trong số này, không có gì tải
  4. Bàn phím:
    • ContextMenu (xem 3.)
    • Nhập - Xem 1.

Làm thế nào để nắm bắt những liên kết này
không đáng tin cậy cách để nắm bắt tất cả các sự kiện liên kết.

  • Sự kiện onmouseup thể được sử dụng để phát hiện 1, 2, và 3.
    Nút sử dụng có thể được theo dõi thông qua các event.button(or event.which) tài sản. Trong tất cả các trình duyệt không phải là IE, 0 = Trái, 1 = Trung bình, 2 = Phải. Trong IE, 1 = Trái, 2 = Trung bình, 4 = Phải.
  • Sự kiện onclick có thể được sử dụng để chụp 1 và 2.
    Phím bổ trợ có thể được phát hiện thông qua các thuộc tính event.altKeyevent.shiftKey.
  • Sự kiện oncontextmenu có thể được sử dụng để chụp 3
  • Sự kiện onkeydown có thể được sử dụng để chụp 4.

Hành vi của các phím modifier không chính thức trong bất kỳ đặc điểm kỹ thuật, và vì thế browser- riêng. Ít nhất Firefox (ít nhất 3+) và Chrome (tất cả?) Thực hiện hành vi quan trọng này.

Related question - Cách chặn hành động trên liên kết (<a>)?

+0

Cảm ơn bạn đã trả lời chi tiết. Tôi đoán rằng cách duy nhất để chắc chắn theo dõi nhấp chuột vào liên kết bên ngoài là triển khai một số loại "trang chuyển hướng" (như Google và Facebook). –