标签:javascript mobile-safari ios5 ipad
我有一个特定于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
UPDATE
我刚刚在运行IOS5的iPad2上进行了测试,它肯定会暂停在非活动选项卡中执行JavaScript.您将无法阻止此行为,您只需使用它即可.
View the test page on JS Fiddle
标签:javascript,mobile-safari,ios5,ipad 来源: https://codeday.me/bug/20190613/1235366.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。