众所周知,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重新激活JavaScript 。