判斷當前頁面的可見性——visibilitychange屬性的應用

前段時間需要寫一個程序的demo,演示給領導,寫起來是簡單,但是沒想到微信那邊對小程序的審覈卡得很嚴,因爲涉及到視頻播放==== 各種改小程序類型,兩個小程序分別提交同一套代碼,提交了好幾次,最後終於是給我過了一次.。。最後不得不考慮改爲小程序web-view內嵌h5頁面,雖說小程序的api裏面關於視頻播放的還是挺好使的,但是代碼審覈就是個大坑。找了https的服務器,配置白名單(域名對應的服務器上傳授權文件好麻煩),ok 終於搞定了,在h5頁面終於隨心所欲的耍。。。沒想到出現了一個很尷尬的事情,領導給我打電話,我居然還可以聽到那頭h5頁面播放視頻的聲音,小程序切到後臺了,視頻還在播放,哈哈哈 =.= 突然找到了 HTML5新提供的一個api,作用是記錄當前標籤頁在瀏覽器中的激活狀態。所謂“激活狀態”指當前標籤是否正在被用戶瀏覽。 // 兼容各種瀏覽器兼容 var hidden, state, visibilityChange; if (typeof document.hidden !== "undefined") { hidden = "hidden"; visibilityChange = "visibilitychange"; state = "visibilityState"; } else if (typeof document.mozHidden !== "undefined") { hidden = "mozHidden"; visibilityChange = "mozvisibilitychange"; state = "mozVisibilityState"; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; visibilityChange = "msvisibilitychange"; state = "msVisibilityState"; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; state = "webkitVisibilityState"; } document.addEventListener(visibilityChange, function () { if (document[state] == "hidden") {//頁面切換至後臺 video.pause(); } else { // video.play(); } }, false); 當小程序被換至後臺得時候 視頻暫停播放 其實短信驗證碼倒計時也可以用到這個,短信驗證碼倒計時50S時候,手機鎖屏,這個時候我們得js腳本是沒有運行,當我們再次解鎖的時候,短信驗證碼還是從50S開始計算的,實際上短信驗證碼的有效期肯定是沒有50S的,這樣可能就會出現問題,當用戶繼續操作的時候,會報錯,短信驗證碼已超時。 var visibilityHiddenTime,betweenMs; document.addEventListener(visibilityChange, function () { if (document[state] == "hidden") {//頁面切換至後臺 visibilityHiddenTime = Date.now();//記錄切換至後臺的時間 } else { betweenMs = Date.now() -visibilityHiddenTime; // 切回來以後短信驗證碼倒計時減去betweenMs 大致爲實際的短信驗證碼有效期 } }, false); 值得注意的是 該屬性 ios 7.1及以上都支持 安卓是從4.4開始支持的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章