2009-08-03 82 views
3

我试图检测用户何时从当前浏览器选项卡切换到另一个选项卡。监听window.onblur在firefox中工作良好,可以检测用户何时将焦点切换到另一个窗口,但当用户切换到另一个选项卡时似乎不会触发。但是,从另一个选项卡切换到相关标签时,似乎会激发onfocus。是否有可能检测到用户切换到不同的浏览器选项卡?

有没有办法检测用户何时离开当前标签?

+0

**更新:**截至2013所有主流浏览器提供了所谓的[可视性API]支持(https://developer.mozilla.org/en-US /文档/网络/指南/ User_experience/Using_the_Page_Visibility_API?redirectlocale = EN-US&redirectslug = DOM/Using_the_Page_Visibility_API)。看到这里的示例:http://stackoverflow.com/a/19519701/603003 – ComFreek 2013-10-23 14:07:45

回答

8

显然,在Firefox中,如果您使用document.onBlur而不是window.onblur作为事件处理程序,它将适用于制表符切换。

+0

哇,没想到这样做,但它是有道理的。谢谢! – 2009-08-03 05:44:18

3

此示例代码似乎适用于我。当我切换标签时,我编辑了代码以显示一个警告框(请不要这样做)。它导致了一个无限循环;-)并不得不使用任务管理器关闭FF。

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

function onBlur() { 
    document.body.className = 'blurred'; 
}; 
function onFocus(){ 
    document.body.className = 'focused'; 
}; 

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

这是什么用于Internet Explorer的神奇检查? – 2009-08-03 10:14:55

相关问题