当使用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中解决遇到的问题.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Mip是什么意思以及作用有哪些
怎么测试Mip页面运行情况
MIP安装的具体步骤有哪些
HTML添加超链接、锚点的方法及作用详解(附视频)
MIP的规则有哪些
Mip轮播图组件中的重要属性讲解
Mip的内联框架组件是什么
怎么创建初始的MIP配置及模板文件
HTML实现多选框及无法提交多数据的原因分析(附视频)
HTML如何设置复选框、单选框以及默认选项?(图文+视频)
怎么使用MIP组件
Div垂直居中效果怎么实现
HTML如何实现视频在线播放
如何使用Mip代码校验工具
Mip中弹出层组件是什么
如何用HTML实现简单按钮样式
Mip中快速回顶组件怎么用
Div内容居中效果如何实现
Div水平居中效果怎么实现
Mip中列表组件怎么用