在移动Safari迫在眉睫标签交换Pagehide事件在iPad上运行时不火(Pagehide ev

2019-07-30 18:52发布

大家都知道,移动Safari暂停网页上的JavaScript时执行

  1. 您切换到不同的浏览器选项卡
  2. 切换到不同的iOS应用(例如,当你得到了来电的手机应用程序)

您可以订阅该窗口的“pagehide”“pageshow”事件,以检测即将悬挂和Javascript的激活。

问题是,这些事件不火的时候,对iPad的移动Safari浏览器选项卡切换 (1)。 在iPhone上的移动Safari浏览器一切都很好 ,只是如上所述。

这是微不足道的证明:

<!DOCTYPE html>
<html>
<head>
    <script>
        window.addEventListener("pagehide", function(evt){
            var logger = document.getElementById('log_id');
            logger.innerText = logger.innerText + " pagehide fired!";
        }, false);
    </script>
</head>
<body>
<div id="log_id"></div>
</body>
</html>

它触发对选项卡切换(1)操作的方式应用开关(2),而不是仅当ipad公司(的iOS5和iOS6的Preview3)。 所有iPhone很好..

任何人都已经能够探测到在iPad上浏览器的一个迫在眉睫的选项卡切换?

的Javascript当选项卡再次处于活动状态的激活可以通过心脏跳动环路所描述的那样检测同一主题的讨论 。

Answer 1:

尝试检查的重点和模糊的文件。

为什么需要网页浏览权限API?

  1. 您可以使用存储事件说其他页面,谁是活跃。
  2. 您可以使用计时器(setInterval的)从去年计时器消防检查时间。 如果它更比预想的大 - 页面被隐藏,因为大多数浏览器停止定时器,然后页面是隐藏的。


Answer 2:

苹果公司于iOS7修正。 (在iPad模拟器刚试过)



Answer 3:

我同意皮纳尔:使用对焦/模糊! 但我建议不要在文件中,而是在窗口。 只需注册一个监听器,对他们做你的东西在里面。

作为http://caniuse.com/#feat=pagevisibility指出,要使用该功能没有得到很好的落实。 (编辑:只是测试它在一个小型测试的例子 - 它适用于iOS 5/6 - 即使caniuse.com断言不同)

如果您尝试使用一个计时器,你可以尝试requestAnimationFrame作为替代的setInterval。



文章来源: Pagehide event on imminent tab switching in Mobile Safari does not fire when running on iPad