站長資訊網
        最全最豐富的資訊網站

        如何使用html5的Page Visibility API來實現獲取焦點js事件

        當前窗口獲得焦點js事件,html5發布之前我們使用window.onfocus和window.onblur來獲得窗口焦點和失去窗口焦點

        //當前窗口得到焦點   window.onfocus = function() {     //播放動畫或視頻   };      //當前窗口失去焦點   window.onblur = function() {     //暫停動畫或視頻   };

        這個方法可以實現切換標簽暫停動畫視頻,但是會帶來一個問題,由于是判斷焦點,如果是在當前頁面上鋪上一個小窗口,那當前頁面就暫停了動畫,試想,如果你一邊看片,一邊開個聊天窗口與MM聊天,當你操作聊天窗口的時候,視頻暫停了,這并不是你想要的效果。

        現在我們來看看HTML5是怎么解決的。H5 提供了很多簡單實用的 API,Page Visibility API 就是其中之一。 Page Visibility API能有效的幫助我們完成這樣的判斷。

        使用html5的Page Visibility API來實現

        這個 API 本身非常簡單,由以下三部分組成。

        document.hidden:表示頁面是否隱藏的布爾值。頁面隱藏包括 頁面在后臺標簽頁中 或者 瀏覽器最小化 (注意,頁面被其他軟件遮蓋并不算隱藏,比如打開的 sublime 遮住了瀏覽器)。

        document.visibilityState:表示下面 4 個可能狀態的值

        hidden:頁面在后臺標簽頁中或者瀏覽器最小化

        visible:頁面在前臺標簽頁中

        prerender:頁面在屏幕外執行預渲染處理 document.hidden 的值為 true

        unloaded:頁面正在從內存中卸載

        Visibilitychange事件:當文檔從可見變為不可見或者從不可見變為可見時,會觸發該事件。

        這樣,我們可以監聽 Visibilitychange 事件,當該事件觸發時,獲取 document.hidden 的值,根據該值進行頁面一些事件的處理。

        document.addEventListener('visibilitychange', function() {     var isHidden = document.hidden;     if (isHidden) {       // 動畫視頻暫停     } else {       // 動畫視頻開始     }   });

        結合demo中的實例,切換標簽或者最小化的時候,demo中的視頻會暫停,恢復當前頁面時,demo中的視頻會繼續播放。完整的代碼如下:

        var videoElement = document.getElementById("videoElement");      // 如果頁面被隱藏,則暫停播放,如果頁面恢復,則繼續播放   function handleVisibilityChange() {     if (document[hidden]) {       videoElement.pause();     } else {       videoElement.play();     }   }      // 判斷瀏覽器的支持情況   if (typeof document.addEventListener === "undefined" || typeof document[hidden] === "undefined") {     consol.log("This demo requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API.");   } else {     // 監聽visibilityChange事件        document.addEventListener(visibilityChange, handleVisibilityChange, false);            // 當播放器暫停的時候,將頁面標題設置為:Paused.     videoElement.addEventListener("pause", function(){       document.title = 'Paused';     }, false);            // 當播放器正常播放時,將頁面標題設置為:Playing.     videoElement.addEventListener("play", function(){       document.title = 'Playing';      }, false);   }

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 四虎影视884a精品国产四虎| 日本一区精品久久久久影院 | 久久水蜜桃亚洲av无码精品麻豆 | 久久精品欧美日韩精品| 久久久久久无码国产精品中文字幕| 国产精品天天影视久久综合网| 亚洲国产精品成人精品无码区 | 亚洲国产精品成人精品无码区| 久久亚洲中文字幕精品一区四| 91久久福利国产成人精品| 97精品国产手机| 久久国产乱子伦免费精品| 香蕉依依精品视频在线播放| 精品国产一区二区三区久久蜜臀| 国产精品www| 久久久久人妻一区精品色| 亚洲欧洲精品成人久久曰影片| 国产亚洲精品AA片在线观看不加载 | 国产精品无码专区在线观看| 8AV国产精品爽爽ⅴa在线观看| 青青青国产精品一区二区| 伊人久久综合精品无码AV专区| 国产一精品一AV一免费| 午夜亚洲av永久无码精品| 国内精品久久久久久久久| 91精品国产高清久久久久久91 | 少妇精品无码一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 国产精品视频不卡| 99热精品久久只有精品| 国产成人精品一区在线| 国产91精品一区二区麻豆亚洲| 91精品国产91久久| 国产精品亚洲综合专区片高清久久久 | 国产精品夜色视频一级区 | 国产精品乱视频| 国产视频精品免费视频| 精品久久久久中文字| 日本免费精品一区二区三区 | 国产欧美精品一区二区三区四区| 国产精品自在线拍国产电影|