2011-08-08 46 views
5

我看過這樣的:確定瀏覽器選項卡是否處於活動狀態? - IE?

How to tell if browser/tab is active

和:

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

第一個鏈接提供了現代瀏覽器的解決方案,但在IE7/8不起作用。這兩個問題都相當古老。是否有解決問題的方法來確定訪問者是否正在查看其打開的選項卡?

幾乎所有我嘗試過的Chrome都能正常工作。但IE7只是失敗。

我只是想設置一個全局變量,說明頁面是否被查看。

var isActive = true; 

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

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

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

回答

7

經過多番谷歌搜索...然後一些更多...然後一些更多... 4小時左右我終於發現這個鏈接隱藏在互聯網的深處。評論表明有一個小錯誤存在,但對於我需要的東西來說它沒有問題。

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

略有不同,但this was marked as the answer暗示它的工作,它是真實需要的延遲。不是很優雅,但如果它的作品。

+0

也許我在不清楚的問題。我不想打開另一個窗口。我只想在瀏覽器未查看選項卡時暫停事件。然後在他們返回標籤時恢復他們 – JasonS

相關問題