系統休眠或瀏覽器不是當前活動狀態,不執行js的解決思路


手機端原生開發,當前頁面從系統中被喚起會有相應的事件觸發。但webapp確無法獲取。

基於瀏覽器自身規則,在系統休眠或着瀏覽器不處於當前活動狀態是,js是不執行的。

那么如果想讓頁面能及時更新,解決思路有2個:

一:用一個定時程序,計算當前執行的時間,和上一次執行的時間差,如果大於5m,就看作當前頁面背重新激活了。

var oldtime = new Date().getTime();
function checkPageActive () {
    var newtime = new Date().getTime();
  if ((newtime - oldtime) > 5000){
    // todo something
}
  oldtime = newtime;
}
setInterval(checkPageActive, 1000)

 

二:利用document的visibilitychange事件,此事件也可用於減少服務器開銷的場景,比如當前頁面如果不是可見狀態,可以暫停頁面中有消耗的功能,等頁面可見時在繼續。

var hidden, visibilityChange; 
if (typeof document.hidden !== "undefined") {
  hidden = "hidden";
  visibilityChange = "visibilitychange";
} else if (typeof document.msHidden !== "undefined") {
  hidden = "msHidden";
  visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
  hidden = "webkitHidden";
  visibilityChange = "webkitvisibilitychange";
}
function handleVisibilityChange() {
  if (document[hidden]) {
    // todo something
  } else {
    // todo something
  }
}
if (typeof document.addEventListener === "undefined" || typeof document[hidden] === "undefined") {
  console.log("不支持");
} else {
  document.addEventListener(visibilityChange, handleVisibilityChange, false);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM