被触发了
– 当我切换到浏览器窗口中的不同选项卡
>当我点击浏览器窗口的最小化/恢复按钮
(还行吧)
没有触发:
– 当我使用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
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。