瀏覽器頁面可見性事件
當(dāng)我們頁面在做耗資源的操作時(例如websockert 通訊,音頻、視頻播放燈),彼時切換到其他頁面,耗資源的操作還在繼續(xù),但我們已經(jīng)看不到最直觀的效果反饋了,又浪費了服務(wù)器資源,有沒有辦法在頁面切換到其它頁面時讓其暫停耗資源的操作呢,讓服務(wù)器的資源能夠最大化的有效利用?
瀏覽器頁面可見性事件主要借助一個HTML5的一個API visibilitychange
function getAvailableVisiablityPrfix(){ var prefixs=['webkit','moz','ms','o']; if('hidden' in document) return ''; for(var i=0;i<prefixs.length;i++){ var prefix=prefixs[i]; if((prefix+'hidden') in document){ return prefix; } } //未識別到指定的結(jié)果,兜底返回 return 'not found'; } /** * 注冊頁面可見性事件 * @param {function} hook 頁面可見性回調(diào)函數(shù) * @returns */ function registerPageVisibilityEvent(hook){ var prefix=getAvailableVisiablityPrfix(); if(prefix==='not found'){ if(window.console) { console.error('your browser is not support visibilitychange event'); } else { alert('your browser is not support visibilitychange event'); } return; } var hiddenName=prefix+'hidden', eventName=prefix+ 'visibilitychange', stateName=prefix+ 'visibilityState'; //注冊監(jiān)聽事件 document.addEventListener( eventName , function () { var visibilityState=document[stateName], hidden=document[hiddenName]; hook && hook({visibilityState:visibilityState,hidden:hidden}); } ,false); }
浙公網(wǎng)安備 33010602011771號