当使用ALT TAB切换程序/窗口或单击任务栏时,javascript – visibilitychange事件不会触发

前端之家收集整理的这篇文章主要介绍了当使用ALT TAB切换程序/窗口或单击任务栏时,javascript – visibilitychange事件不会触发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本上,问题是事件“visibilitychange”的行为.

被触发了
– 当我切换到浏览器窗口中的不同选项卡

>当我点击浏览器窗口的最小化/恢复按钮

(还行吧)

没有触发:
– 当我使用ALT TAB切换到不同的窗口/程序

>当我切换到不同的窗口/程序单击任务栏

(这应该触发,因为,就像最小化时,窗口的可见性可能会改变)

W3页面可见性API文档:http://www.w3.org/TR/page-visibility/

关于ALT TAB /规格表中的程序切换的“页面可见性”没有定义.我猜这在操作系统和浏览器之间有所作为.

测试

>浏览器:
Chrome 40.0.2214.115 m / Firefox 36.0.1 / Internet Explorer 11.0.9600.17107
>操作系统:Windows 8.1

是否有解决方法解决这个问题?实现是相当简单的,我使用jQuery听“visibilitychange”事件,然后在其回调中,我检查“document.visibilityState”的值,但是问题是事件在预期时没有触发.

$(document).on('visibilitychange',function() {

    if(document.visibilityState == 'hidden') {
        // page is hidden
    } else {
        // page is visible
    }
});

这也可以在没有jQuery的情况下完成,但ALT TAB和任务栏切换隐藏/显示预期行为仍然缺失:

if(document.addEventListener){
    document.addEventListener("visibilitychange",function() {
        // check for page visibility
    });
}

我也尝试过ifvisible.js模块(https://github.com/serkanyersen/ifvisible.js),但行为是一样的.

ifvisible.on('blur',function() {
    // page is hidden
});

ifvisible.on('focus',function() {
    // page is visible
});

我还没有在其他浏览器测试,因为如果我无法使它在Windows上的Chrome工作我真的不在乎其他浏览器.

提前感谢任何帮助或建议.

UPDATE

我尝试为事件名称(visibilitychange,webkitvisibilitychange,mozvisibilitychange,msvisibilitychange)使用不同的供应商前缀,但是当我切换到任务栏或ALT TAB中的其他程序时,仍然不会触发事件,或者即使我打开了开始菜单在Windows窗口中,覆盖整个屏幕.

我可以在Chrome,Firefox和Internet Explorer中重现完全相同的问题.

更新#2

Here’s一个综合帖子我为这个问题写了一个解决方案,在纯粹的javascript来解决遇到的问题.

解决方法

Here’s一个综合帖子我为这个问题写了一个解决方案,在纯JavaScript中解决遇到的问题.
原文链接:https://www.f2er.com/html/224236.html

猜你在找的HTML相关文章