HTML5 Page Visibility

来源:http://www.cnblogs.com/peakleo/archive/2016/12/29/6234003.html
-Advertisement-
Play Games

什麼是 Page Visibility ? Page Visibility 即頁面可見性,通過 visibilityState 的值檢測頁面當前是否可見。當一個網站是可見或點擊選中的狀態時 Page Visibility API 可以讓你獲取到這種狀態,當用戶最小化網頁或者瀏覽到其他標簽的網頁時,A ...


什麼是 Page Visibility ?
Page Visibility 即頁面可見性,通過 visibilityState 的值檢測頁面當前是否可見。當一個網站是可見或點擊選中的狀態時 Page Visibility API 可以讓你獲取到這種狀態,當用戶最小化網頁或者瀏覽到其他標簽的網頁時,API將發送一個關於當前頁面的可見信息的事件vibilitychange。你可以檢測該事件然後執行一些活動或是展示不同的效果。這個API在節約資源上是非常有用的,當網頁不可見時,這個API通過提供給開發者可以操作不必須的任務的介面。比如,如果你的網站正在播放一個視頻,也許當用戶瀏覽其他瀏覽器時它可以暫停,那麼當用戶切換回來的時候,就可以繼續播放了。用戶可以繼續觀看,不會因為瀏覽其他的瀏覽器導致丟失當前視頻的進度。

頁面可見性(Page Visibility)API可以有哪些用途

  • 網站有圖片輪播效果,只有在用戶觀看輪播的時候,才會自動展示下一顯示信息。
  • 儀錶盤的應用程式不希望在頁面不可見時輪詢伺服器進行更新。
  • 頁面想要檢測是否正在渲染,以便可以準確的計算網頁瀏覽量
  • 當設備進入待機模式時,網站想要關閉設備聲音(用戶按下電源鍵關閉屏幕)
  • 可應用於視頻站點,當用戶進入頁面播放,離開頁面暫停。
  • 可應用於登錄同步
  • 可用於計算線上時長。
  • 線上聊天離開狀態。
  • 還有一些切換效果,比方說,每次用戶切換到你這個頁面上的時候,logo抖一下,或頁面一道亮光閃過,或者其他效果

如何使用?

Page Visibility API的規範很簡單,只有兩個屬性:

document.hidden 根據瀏覽器視窗的狀態返回布爾值 true 或 false。

document.visibilityState存儲具體的狀態字元串。一共有四種狀態:

  • visible : 頁面內容至少是部分可見,非最小化視窗的前景選項卡。
  • hidden : 頁面內容對用戶不可見,可以是一個後臺標簽,或是最小化視窗的一部分,或是在操作系統鎖屏激活的狀態下。
  • prerender : 頁面內容正在被預渲染且沒有對用戶是不可見的
  • unloaded : 頁面正在從記憶體中卸載。

下麵寫一個計算線上時長的例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>0 : run</title>
</head>
<body>
<h1>你在頁面停留的時間為 <span id="time">0</span> s</h1>
<h1>這是你第 <span id="count">0</span> 次離開又回來了。</h1>
<script>
    var i = 0,
            count = 0,
            si = setInterval(function () {
                document.querySelector('#time').innerHTML = ++i;
                document.title = i + ' : run';
            }, 1000);
    document.addEventListener("visibilitychange", function () {
        if (document.hidden) {
            clearInterval(si);
            document.title = i + ' : pause';
        } else {
            document.querySelector('#count').innerHTML = ++count;
            si = setInterval(function () {
                document.querySelector('#time').innerHTML = ++i;
                document.title = i + ' : run';
            }, 1000);
        }
    });
</script>
</body>
</html>

上例代碼大意是:當頁面可見時,計時停留的時間,當頁面不可見時,計時器停止,頁面標題與之同步(切換標簽頁時註意標題)。再次返回頁面,繼續計時並且顯示當前離開又回來的次數。

本文只是個引子,簡單介紹基礎使用,更為複雜的應用和效果大家自行實現。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實例 讓第二個元素的寬度為其他元素的三倍: div:nth-of-type(1){flex-grow:1;} div:nth-of-type(2){flex-grow:3;} div:nth-of-type(3){flex-grow:1;} 複製 效果預覽 瀏覽器支持 表格中的數字表示支持該屬性的第 ...
  • 首先介紹預解析,雖然預解析字面意思很好理解,但是卻是出坑出的最多的地方,也是bug經常會有的地方,利用好預解析的特性可以解決很多問題,並且提高代碼的質量及數量,瀏覽器在解析代碼前會把變數的聲明和函數(整個函數體)提前到當前作用域的最頂端。 細節問題: 在多對的script標簽中如果有相同的函數,那它 ...
  • 本文主要講述採用Html5+jQuery+CSS 製作相冊的小小記錄。 主要功能點: Html5進行佈局 調用jQuery(借用官網的一句話:The Write Less, Do More)極大的簡化了JavaScript編程 CSS 樣式將表現與內容分離 話不多說,先上效果圖: 代碼如下: 1 < ...
  • Ajax的概念 AJAX即“Asynchronous Javascript And XML”(非同步JavaScript和XML),是一種用於創建快速動態網頁的技術。 動態網頁:是指可以通過伺服器語言結合資料庫隨時修改數據的網頁。 靜態網頁,隨著html代碼的生成,頁面的內容和顯示效果就基本上不會發生 ...
  • index - 選擇器的 index 位置 element - 當前的元素(也可使用 "this" 選擇器) ...
  • 1.開啟“QQ線上狀態”服務 http://jingyan.baidu.com/article/b24f6c823425a586bfe5da1f.html 2.選擇一種合適的用在網站中 http://www.lanrenzhijia.com/service/ ...
  • Canvas 的width height屬性 1、當使用width height屬性時,顯示正常不會被拉伸;如下 運行效果如下,為對角線 2、使用style時圖像會被拉伸(變形), 運行效果 如何理解???可以這麼理解———— Canvas 是一個畫板和一張畫紙,畫板相當於一個容器,畫圖/作業是在畫 ...
  • 通過css屬性 Cursor:url()自定義滑鼠游標。 url是自定義滑鼠圖標路徑 default指的是定義預設的游標(通常是一個箭頭),以防沒有由 URL 定義的可用游標。 圖標的格式根據不同的瀏覽器來分: IE支持cur,ani,ico這三種格式。 Google,FF支持bmp,gif,jpg ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...