众所周知,Mobile Safari会在网页上暂停
Javascript执行
>切换到不同的浏览器标签
>切换到其他iOS应用程序(例如,当您收到来电时,手机应用程序)
您可以订阅窗口的“pagehide”和“pageshow”事件,以发现即将暂停和重新启动Javascript.
问题是,iPad Mobile Safari上的标签切换(1.)时,这些事件不会触发.在iPhone Mobile 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>
只有在进行应用程序切换(2.)而不是标签开关(1.)时,它才能在iPad(iOS5和iOS6 Preview3)上触发.所有iPhone都可以正常工作
有没有人能够检测到iPad浏览器上即将开始的标签页切换?
当标签再次激活时,Javascript的重新启动可以通过this discussion of the same topic中所述的心跳环来检测.