javascript - iOS 5 在选项卡未激活时暂停 JavaScript

标签 javascript ipad ios5 mobile-safari

我有一个特定于 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 的执行。您将无法阻止这种行为,您只能忍受它。

View the test page on JS Fiddle

关于javascript - iOS 5 在选项卡未激活时暂停 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7977170/

相关文章:

javascript - 使用 AJAX 从 JavaScript 调用 PHP 函数

ios - 获取 iPad 中文件的物理位置

iphone - UISearchBar 全屏

javascript - 如何保留用户名登录 vue.js

javascript - 无法在 Safari 中获取和更新 CSS 样式

javascript - 选择菜单更改时执行以下 jquery 代码

iphone - 如何在允许的一百个临时安装之一上安装应用程序?

iphone - 如何从 subview 自定义单元格刷新 UI View ?

iphone - 还有其他人在已发布的 IOS 5 上安装 iPhone Enterprise 应用程序时遇到问题吗?

ios - UINavigationController 子类未在预期时调用 willShowViewController