手機端原生開發,當前頁面從系統中被喚起會有相應的事件觸發。但webapp確無法獲取。 基於瀏覽器自身規則,在系統休眠或著瀏覽器不處於當前活動狀態是,js是不執行的。 那麼如果想讓頁面能及時更新,解決思路有2個: 一:用一個定時程式,計算當前執行的時間,和上一次執行的時間差,如果大於5m,就看作當前頁 ...
手機端原生開發,當前頁面從系統中被喚起會有相應的事件觸發。但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); }