在iPad上运行时,Mobile Safari中即将切换的标签页上的Pagehide事件不会触发

问题描述 投票:13回答:3

众所周知,Mobile Safari在以下情况下会暂停网页上的Javascript执行:>

  1. 您切换到其他浏览器选项卡
  2. 切换到其他iOS应用(例如,当您接到电话应用时)
  3. 您可以订阅窗口的“ pagehide”

“ pageshow”事件,以检测即将到来的Java语言暂停和重新激活。

问题是,当在[[iPad

Mobile Safari上进行tab-switching(1.)时,不会触发这些事件。如上所述,在iPhone Mobile Safari上,所有内容均为fine演示很简单:

<!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>

仅在进行应用程序切换(2.)时在iPad(iOS5和iOS6 Preview3)上触发,而在选项卡切换(1.)上不触发。所有iPhone都可以正常工作。

有人能在iPad浏览器上检测到即将发生的标签切换吗?

tab再次变为活动状态时,Javascript的

reactivation

可以通过this discussion of the same topic中所述的心跳循环来检测。[众所周知,当您切换到其他浏览器选项卡时,切换到另一个iOS应用程序(例如,当您接到电话应用程序的来电时,Mobile Safari会暂停网页上Javascript的执行...
javascript ios mobile-safari dom-events
3个回答
1
投票
为什么需要页面可见性API?

1
投票
iOS7]中修复。(只需在iPad Simulator中尝试过)

0
投票
http://caniuse.com/#feat=pagevisibility所述,您要使用的功能未正确实现。 (编辑:只是在一个迷你测试用例中对其进行了测试-它可以在iOS 5/6上运行-即使caniuse.com声明了不同)
© www.soinside.com 2019 - 2024. All rights reserved.