1. 程式人生 > >系統休眠或瀏覽器不是當前活動狀態,不執行js的解決思路

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

color pan 瀏覽器 原生開發 可用 繼續 gettime != inter

手機端原生開發,當前頁面從系統中被喚起會有相應的事件觸發。但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); }

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