基本上,问题在于事件"visibilitychange"的行为.
它被触发: - 当我切换到浏览器窗口内的不同选项卡时.
(还行吧)
它没有被触发: - 当我使用ALT + TAB切换到不同的窗口/程序时.
(这应该触发,因为,就像最小化时一样,窗口的可见性可能会改变)
W3页面可见性API文档:http://www.w3.org/TR/page-visibility/
在规格表中没有关于ALT + TAB /程序切换的"页面可见性"的定义.我猜它在操作系统和浏览器之间有一些关系.
有解决方法来解决此问题吗?实现相当简单,我使用jQuery监听"visibilitychange"事件,然后在其回调中,我检查"document.visibilityState"的值,但问题是事件在预期时没有触发.
$(document).on('visibilitychange', function() {
if(document.visibilityState == 'hidden') {
// page is hidden
} else {
// page is visible
}
});
Run Code Online (Sandbox Code Playgroud)
这可以在没有jQuery的情况下完成,但ALT + TAB和任务栏开关隐藏/显示预期行为仍然缺失:
if(document.addEventListener){
document.addEventListener("visibilitychange", function() {
// check for page visibility
});
}
Run Code Online (Sandbox Code Playgroud)
我也尝试了ifvisible.js模块(https://github.com/serkanyersen/ifvisible.js),但行为是一样的.
ifvisible.on('blur', function() {
// page is hidden
});
ifvisible.on('focus', …Run Code Online (Sandbox Code Playgroud)