iphoneスリープモードでは、jsタイマーが実行できません.

1014 ワード

一、問題現象
    H 5項目のうち、ページにカウントダウン情報を表示する必要があります.その後、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の後で、1篇の文章を探し当てます: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 sleping 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.