2011-08-08 14 views
5

Mam spojrzał na to:Ustal, czy karta przeglądarki jest aktywna? - IE?

How to tell if browser/tab is active

i:

Is there a reliable way to determine if a browser tab or window is inactive or not in focus?

Pierwszy link dostarcza rozwiązania dla nowoczesnych przeglądarek, ale nie działa w IE7/8. Oba te pytania są dość stare. Czy istnieje rozwiązanie problemu określenia, czy użytkownik przegląda otwartą kartę, czy nie?

Prawie wszystko, co próbowałem, działa dobrze w Chrome. Ale IE7 po prostu zawiedzie.

Po prostu chcę ustawić globalną zmienną, która określa, czy strona jest przeglądana.

tj

var isActive = true; 

$(window).focus(function() { 
    isActive = true; 
}); 

$(window).blur(function() { 
    isActive = false; 
}); 

// test 
setInterval(function() { 
    console.log(window.isActive ? 'active' : 'inactive'); 
}, 1000); 

Odpowiedz

7

Po dużo Googling ... potem trochę więcej ... potem trochę więcej ... 4 godziny lub tak późno W końcu znalazłem ten link ukryty w głębiach Internetu. Komentarze sugerują, że istnieje mały błąd, ale jest on odpowiedni dla tego, czego potrzebuję.

http://www.thefutureoftheweb.com/blog/detect-browser-window-focus

var isActive = true; 
function onBlur() { 
    isActive = false; 
}; 
function onFocus(){ 
    isActive = true; 
}; 

if (/*@[email protected]*/false) { // check for Internet Explorer 
    document.onfocusin = onFocus; 
    document.onfocusout = onBlur; 
} else { 
    window.onfocus = onFocus; 
    window.onblur = onBlur; 
} 
1

Nieco inaczej, ale this was marked as the answer sugeruje to działało i jest to opóźnienie, które jest potrzebne. Niezbyt elegancko, ale jeśli działa.

+0

Może moje pytanie w niejasny. Nie próbuję otworzyć innego okna. Chcę tylko zatrzymać zdarzenia, gdy przeglądarka nie przegląda karty. Następnie wznów je, gdy powrócą do zakładki – JasonS

Powiązane problemy