2009-06-24 48 views
20

Tôi đang tìm kiếm sự kiện sẽ kích hoạt bất cứ khi nào người dùng chuyển từ trang này sang tab khác và một sự kiện khác sẽ kích hoạt khi người dùng chuyển trở lại tab.Sự kiện khi người dùng chuyển các tab trình duyệt

window.onblur và window.onfocus don't seem to work correctly trên tất cả các trình duyệt

Có một proxy tôi có thể nhìn vào để tổng hợp sự kiện này?

+0

Tôi khá chắc chắn điều này là không thể, ít nhất trên tất cả các trình duyệt. –

+0

Thực ra, khả năng tương thích giữa các trình duyệt [có vẻ không tệ] (http://www.quirksmode.org/dom/events/blurfocus.html). Bạn nhận được một số sự kiện tăng gấp đôi với Firefox và Safari/Windows, nhưng điều đó khá dễ dàng để làm việc xung quanh. 'window.onfocus/onblur' đã có sẵn từ trước cuộc chiến trình duyệt và hành vi của chúng không thay đổi nhiều. Rõ ràng có một số _bugs_ trong việc triển khai, nhưng không có _semantics_ khác nhau. – lanzz

Trả lời

30

Bạn có thể thử sử dụng một khung, chẳng hạn như MooTools hoặc jQuery cung cấp hỗ trợ trình duyệt chéo. Họ sẽ có thể phát hiện với độ tin cậy cao hơn các sự kiện blurfocus cho cửa sổ trình duyệt.

Cá nhân tôi đã sử dụng jQuery với nhiều thành công:

$(window).blur(function(e) { 
    // Do Blur Actions Here 
}); 
$(window).focus(function(e) { 
    // Do Focus Actions Here 
}); 
+0

Thật tuyệt, tôi có thể xem cách chúng được triển khai trong jQuery – EoghanM

+0

@Daniel Hey, thực ra tôi đang tìm kiếm một loại chức năng tương tự. $ (window) .focus (chức năng (e) {// Thực hiện các thao tác lấy nét ở đây}); Nội dung bên trong tập trung sẽ chạy mỗi lần khi có một số chức năng ajax khác trong trang, nhưng một thay đổi nhỏ, 1. Có thể chạy mã bên trong CHỈ này, khi người dùng điều hướng qua lại giữa cùng một trang. –

+1

_5 năm sau: _ Cảm ơn Dude! – MCTaylor17

6

Bạn cũng có thể thử và sử dụng VisibilityAPI.

document.addEventListener("visibilitychange", function() { 
    if (document.hidden){ 
     console.log("Browser tab is hidden") 
    } else { 
     console.log("Browser tab is visible") 
    } 
}); 

See also here on Stackoverflow (possible duplicate)

+1

Liên kết tới giải pháp tiềm năng luôn được chào đón, nhưng vui lòng [thêm ngữ cảnh xung quanh liên kết] (// meta.stackoverflow.com/a/8259) để người dùng đồng nghiệp của bạn sẽ có ý tưởng về nó và tại sao nó ở đó. ** Luôn trích dẫn phần có liên quan nhất của một liên kết quan trọng, trong trường hợp trang web mục tiêu không thể truy cập hoặc vĩnh viễn ngoại tuyến. ** Hãy xem xét rằng _barely nhiều hơn một liên kết đến một trang web bên ngoài là một lý do có thể là [Tại sao và một số câu trả lời đã bị xóa như thế nào?] (// stackoverflow.com/help/deleted-answers). – Makyen

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