2009-10-28 5 views
6

Tôi đã xử lý vấn đề Javascript tồn tại liên quan đến việc theo dõi khi người dùng nhấp vào liên kết (trong trường hợp bạn tò mò, ở đây là: Why does using target="_blank" cause Javascript to fail?).Các nhược điểm của onMousedown so với onClick?

Tôi đã tìm ra rằng tôi có thể giải quyết vấn đề bằng cách theo dõi sự kiện onMousedown thay vì sự kiện onClick.

Tôi tò mò về những nhược điểm của phương pháp này. Những người tôi có thể nghĩ đến:

  1. Nếu người dùng nhấp vào liên kết và sau đó di chuyển chuột ra khỏi liên kết trước khi phát hành, sự kiện sẽ được ghi lại mặc dù người dùng không truy cập liên kết
  2. Nếu người dùng sử dụng phím tab để di chuyển sự tập trung của trình duyệt để liên kết và sau đó nhấn enter, bấm vào sẽ không được ghi

không những là phổ biến, vì vậy tôi không terribly lo lắng về chúng.

Có thiếu sót nào khác không?

Trả lời

6

Một điều nữa: mousedown cũng ghi lại các nhấp chuột phải/giữa.

Nhưng vì hai lý do của bạn, tôi sẽ dính vào onclick. Tôi biết khá nhiều người sử dụng nav bàn phím. Đặc biệt là tìm kiếm-và-getolink trong FF. (/ Để tìm kiếm theo sau là nhập để đi đến liên kết).

Nhưng nếu hai vấn đề này không phải là vấn đề đối với bạn, tôi nghĩ các nhấp chuột phải/trung bình cũng sẽ không quá.

Tôi nghĩ cách theo dõi tất cả người dùng theo liên kết khá phức tạp - người dùng có thể nhấp chuột phải và nhấp vào tab mới/cửa sổ mới ...

+0

Tôi đồng ý với bài đăng của bạn, nhưng nó phiền tôi rằng trang tìm kiếm của Google sử dụng onmousedown thay vì onclick để theo dõi các nhấp chuột, điều này cho thấy họ xử lý các vấn đề này hoặc ít nhất là xem xét thực hành tốt nhất trên thực tế. Có suy nghĩ gì không? – Dunc

+0

Tôi không biết chính xác cách google theo dõi nhấp chuột, nhưng đây là một số điểm tôi có thể nghĩ về chúng bằng cách sử dụng onmousedown: Họ quan tâm đến nhấp chuột tổng hợp% độ tuổi - ít hoặc nhiều hơn không quan trọng. Sử dụng onclick/onmousedown, không có cách nào đáng tin cậy để biết liệu người dùng đã theo một liên kết hay không (sử dụng onclick có thể dẫn đến việc thiếu nhấp chuột phải + mở trong tab mới, bằng cách sử dụng mousedown có thể khiến mọi nhấp chuột phải được đăng ký như một liên kết theo sau). Tuy nhiên, nhấp chuột phải có thể có nghĩa là người dùng bằng cách nào đó quan tâm đến liên kết. – Raze

+4

Ngoài ra, sự kiện mousedown cho phép thêm thời gian để gửi dữ liệu đến Google trước khi liên kết được theo sau (sự khác biệt nhỏ sau khi nhấn nút chuột và trước khi phát hành) - đủ để gửi yêu cầu đến máy chủ của Google. Không chắc chắn nếu onclick sẽ để lại đủ thời gian cho việc này. Lựa chọn thay thế, mà Yahoo thực hiện, là lần đầu tiên đưa bạn đến máy chủ của họ, và sau đó chuyển hướng bạn đến URL quan tâm của bạn. – Raze