iphone休眠模式下,js定时器无法执行

本文探讨了在iPhone休眠模式下,JavaScript定时器停止运行的现象。当设备锁屏后,Safari会终止任何运行的javascript进程,导致例如倒计时等任务在锁屏期间不继续执行。解决方案和背后的原因被提及。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题现象

    一个H5项目中,需要在页面中显示倒计时信息。然后发现在iphone、ipad中,锁屏一段时间后再打开,锁屏那段时间并没有倒计时。代码如下:

function throttle(method, context) {
  clearTimeout(method.tId);
  method.tId = setTimeout(function () {
    method.call(context);
  }, 1000);
}
function timeHandler() {
  var that = this;
  $.each(config.arrRemainTime, function (key, item) {
    if (item.time > 0) {
      item.time = item.time - 1;
      //显示倒计时
      
      that.throttle(that.timeHandler, that);
    }
  });
}

throttle(this.timeHandler, this);

二、原因分析

    google后,找到一篇文章:http://stackoverflow.com/questions/7047989/javascript-stops-as-i-lock-iphone-can-it-still-run

    原因如下:

    You cannot continue to run javascript while the iPhone is sleeping using setTimeout(), however.When the phone is put to sleep, Safari will kill any running javascript processes using setTimeout(). Check out this answer here for some reasons why this is done.





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值