我有一个特定于 iOS 5 的问题,相同的代码在 ios 4.X 和其他桌面浏览器中工作。
我正在使用 JavaScript 每隔几秒做一些事情,现在问题是当我在 iPad safari 中切换到另一个选项卡时,这个脚本停止工作。
当我切换回此选项卡时,它又开始工作了。
您可以在此页面上复制它, http://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_infinite
访问此链接,单击“开始计数”,然后转到其他一些浏览器选项卡。几秒钟后回到此选项卡时,您会注意到当标签不活动时,计数器不会增加。
我认为 Apple 这样做是为了提高性能。有人可以提出一个解决方案来让它工作吗,我完全被这个问题困住了?
最佳答案
如果您有一个计数器,而不是每秒递增 1,请存储“开始时间”,然后计算自该开始时间以来的计数。您仍会每秒执行此操作,但它会从暂停期间恢复。
<div id="counter"></div>
<script>
var startTime = new Date();
var updateCounter = function () {
var displayArea = document.getElementById("counter");
var currentTime = new Date.now();
var differenceInSeconds = Math.round((currentTime - startTime) / 1000);
displayArea.innerHTML = differenceInSeconds ;
}
window.setInterval(updateCounter, 1000);
</script>
See the working example on JS Fiddle
更新
我刚刚在运行 IOS5 的 iPad2 上进行了测试,它肯定会暂停非事件选项卡中 JavaScript 的执行。您将无法阻止这种行为,您只能忍受它。
关于javascript - iOS 5 在选项卡未激活时暂停 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7977170/