Tôi muốn một số mã Javascript chạy khi con chuột rời khỏi cửa sổ trình duyệt. Tôi chỉ cần hỗ trợ Safari (WebKit.)Sự kiện Javascript khi chuột rời khỏi cửa sổ trình duyệt
Tôi đã thử đặt trình xử lý mouseout trên cửa sổ. Trình xử lý đó được gọi một cách đáng tin cậy khi con chuột rời khỏi cửa sổ trình duyệt. Nhưng vì sủi bọt nó cũng được gọi khi chuột di chuyển giữa các phần tử trong tài liệu. Tôi không thể tìm ra cách xác định khi nào con chuột đã thực sự rời khỏi cửa sổ và khi nó chỉ di chuyển giữa các phần tử.
Khi chuột rời khỏi cửa sổ, chính xác một sự kiện được tạo và phần tử đích xuất hiện là phần tử con chuột thực sự kết thúc. Vì vậy, kiểm tra xem phần tử đích là cửa sổ hoặc tài liệu không hoạt động. Và gói toàn bộ trang trong một div có chứa vô hình không hoạt động: hoặc nếu div là vô hình, thì con chuột sẽ không bao giờ vượt qua nó, vì vậy không có gì thay đổi.
(Điều tương tự cũng xảy ra nếu tôi đặt trình xử lý trên tài liệu hoặc tài liệu.chúng tôi, ngoại trừ tài liệu đáng ngạc nhiên đó không nhận được sự kiện di chuyển chuột/chuột khi chuột vào hoặc để trống phần cửa sổ, chẳng hạn như không gian dọc trống được tạo bởi hoàn toàn định vị phần tử có phần dưới: 0. Đối với không gian đó, tài liệu và cửa sổ sẽ nhận được các sự kiện di chuột qua/di chuột với mục tiêu là <html>, nhưng document.body sẽ không.)
Một số ý tưởng tôi đã có:
- Trên mỗi sự kiện trên chuột, nhận vị trí thực tế của chuột và xem liệu nó có trong thực tế trên cửa sổ không. Nhưng tôi không biết nếu điều này là thực sự có thể và nó có vẻ như nó sẽ là khó khăn để loại bỏ tất cả các điều kiện chủng tộc.
- Đồng thời đăng ký trình xử lý di chuột và phát hiện các trường hợp không di chuột qua (hoặc theo sau bởi a) di chuột qua. Nhưng điều đó sẽ đòi hỏi một bộ đếm thời gian.
Chúng tôi sử dụng prototype.js vì vậy lý tưởng tôi muốn thể hiện giải pháp về Event.observe của mẫu thử nghiệm, nhưng tôi có thể tìm ra phần đó.
Cảm ơn mọi đề xuất!
MooTools cung cấp sự kiện chuột/chuộtNhận tùy chỉnh chuột (http://demos.mootools.net/Mouseenter). Tôi không biết Prototype, nhưng nó không cung cấp một cái gì đó tương tự? – Duroth
@Duroth Cảm ơn con trỏ. Prototype 1.6.1 không xuất hiện, nhưng có vẻ như 1.6.2 có thể. – Geoff