目錄
#為什麼要使用此 API?
#檢查頁面的可見性狀態
我們可以在哪裡使用此 API?
#演示
瀏覽器支援
#結論
首頁 CMS教程 &#&按 探索HTML5頁面可見性API

探索HTML5頁面可見性API

Aug 28, 2023 pm 07:33 PM
html頁面 可見性api 探索程式設計

探索HTML5頁面可見性API

早些時候,我們的瀏覽器不具有選項卡式瀏覽功能,但今天,當您查看所有可用的瀏覽器時,我們可以看到所有瀏覽器都提供該功能。作為一名程式設計師,我通常一次打開 10-15 個選項卡,有時這個數字會超過 25-30 個。

#為什麼要使用此 API?

之前,無法確定哪個選項卡處於活動狀態、哪個選項卡處於活動狀態,但藉助 HTML5 Visibility API,我們可以偵測訪客是否正在查看我們的網頁。

在本教學中,我們將了解如何處理 HTML5 Visibility API 以及一個簡單的示範來發現頁面的狀態。在此示範中,我們將根據頁面可見性狀態變更文件標題。

#檢查頁面的可見性狀態

#隨著此 API 的推出,我們迎來了兩個新的文件屬性,它們具有兩種不同的功能。第一個是 document.visibilityState,第二個是 document.hidden

#document.visibilityState 包含四個不同的值,如下所示:

  • 隱藏:頁面在任何畫面上都不可見
  • 預先渲染:頁面在螢幕外載入並且對使用者不可見

  • #可見:頁面可見

  • #已卸載:頁面即將卸載(使用者正在離開目前頁面)

document.hidden 是布林屬性,如果頁面可見則設為 false,如果頁面隱藏則設為 true。

#現在,當我們的網站對使用者隱藏時,我們可以控制網站的行為。

我們立刻就知道了我們的可用性屬性,但現在是時候偵聽該事件了,以便我們可以收到有關頁面可見性的新情況的通知。這是透過 visibilitychange 事件完成的。我們將看到有關如何處理此事件的快速演示。

document.addEventListener('visibilitychange', function(event) {
  if (!document.hidden) {
    // The page is visible.
  } else {
   // The page is hidden. 
  }
});
登入後複製

此程式碼只是利用此事件並發現網頁目前狀態的基本實例。但要讓您知道,這些屬性和方法都應該使用供應商前綴,因為這些事件和屬性在某些瀏覽器中是供應商前綴的。現在我們將以跨瀏覽器的方式看到相同的程式碼:

// Get Browser-Specifc Prefix
function getBrowserPrefix() {
  
  // Check for the unprefixed property.
  if ('hidden' in document) {
    return null;
  }

  // All the possible prefixes.
  var browserPrefixes = ['moz', 'ms', 'o', 'webkit'];

  for (var i = 0; i < browserPrefixes.length; i++) {
    var prefix = browserPrefixes[i] + 'Hidden';
    if (prefix in document) {
      return browserPrefixes[i];
    }
  }

  // The API is not supported in browser.
  return null;
}

// Get Browser Specific Hidden Property
function hiddenProperty(prefix) {
  if (prefix) {
    return prefix + 'Hidden';
  } else {
    return 'hidden';
  }
}

// Get Browser Specific Visibility State
function visibilityState(prefix) {
  if (prefix) {
    return prefix + 'VisibilityState';
  } else {
    return 'visibilityState';
  }
}

// Get Browser Specific Event
function visibilityEvent(prefix) {
  if (prefix) {
    return prefix + 'visibilitychange';
  } else {
    return 'visibilitychange';
  }
}

登入後複製

我們擁有所有瀏覽器前綴屬性,並且事件已準備好應用。現在我們將相應地更改先前的程式碼。

// Get Browser Prefix
var prefix = getBrowserPrefix();
var hidden = hiddenProperty(prefix);
var visibilityState = visibilityState(prefix);
var visibilityEvent = visibilityEvent(prefix);

document.addEventListener(visibilityEvent, function(event) {
  if (!document[hidden]) {
    // The page is visible.
  } else {
   // The page is hidden. 
  }
});
登入後複製

我們可以在哪裡使用此 API?

我們可以考慮使用此 API 在許多不同的場景中。

  1. #假設您在儀表板上,頁面正在定期(例如兩分鐘)輪詢某些 RSS 提要或 API 的詳細資訊。因此,如果頁面對使用者不可見(即使用者實際上並未查看頁面),我們可以限制對 RSS 提要或 API 的呼叫。
  2. 用於影像滑桿。我們可以在頁面隱藏時限制滑桿影像的移動。

  3. 以類似的方式,我們可以只在頁面對使用者隱藏時顯示 HTML 通知。

到目前為止,我們已經看到了使用 HTML5 頁面可見性 API 的程式碼,是時候立即採取一些行動了。

#演示

  • 示範 1:此示範展示如何使用頁面可見性 API 來變更頁面標題。查看示範
  • 示範 2:此示範示範如何在頁面處於非活動狀態時限制從伺服器輪詢資料。

在此演示中,我們將研究如何限制輪詢伺服器以獲取最新信息,但僅限於用戶正在查看頁面時。我假設 jQuery 已經包含在您的頁面中。這裡我們將僅增加計數,但這可以替換為真實的伺服器輪詢。

#HTML

<!-- This element will show updated count -->
<h1 id="valueContainer">0</h1>
登入後複製

JavaScript

<script type="text/javascript">
    
	// Get Browser Prefix
	var prefix = getBrowserPrefix();
	var hidden = hiddenProperty(prefix);
	var visibilityState = visibilityState(prefix);
	var visibilityEvent = visibilityEvent(prefix);
	
	var timer = null;
	
	function increaseVal() {
		var newVal = parseInt($('#valueContainer').text()) + parseInt(1);
		$('#valueContainer').text(newVal);
		document.title = newVal + ': Running'; 
		
		timer = setTimeout(function() {
			increaseVal();
        }, 1);
	}
	
	// Visibility Change 
	document.addEventListener(visibilityEvent, function(event) {
		  if (document[hidden]) {
			  clearTimeout(timer);
			  var val = parseInt($('#valueContainer').text());
			  document.title = val + ': Pause'; 
		  } else {
			  increaseVal();  
		  }
	});
	
	increaseVal();
	
</script>
登入後複製

演示視圖

瀏覽器支援

如果您想查看瀏覽器對此 API 的支持,那麼我建議查看我可以使用嗎? 。但要以程式設計方式尋找瀏覽器支持,我建議閱讀本文來偵測對各種 HTML5 功能的支援。到目前為止,我們在幾乎所有主要和最新的瀏覽器中都對該 API 提供了很好的支援。

#結論

我想說,我們有一個非常好的 API,它只包含兩個屬性和一個事件。這樣,它可以輕鬆地與您現有的應用程式集成,這可能會對您的用戶體驗產生積極影響。最終,現在我們可以控制當我們的網站對使用者隱藏時我們的網站的行為。

#

以上是探索HTML5頁面可見性API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何開始WordPress博客:初學者的分步指南 如何開始WordPress博客:初學者的分步指南 Apr 17, 2025 am 08:25 AM

博客是人們在網上表達觀點、意見和見解的理想平台。許多新手渴望建立自己的網站,卻因擔心技術障礙或成本問題而猶豫不決。然而,隨著平台不斷發展以滿足初學者的能力和需求,現在開始變得比以往任何時候都更容易。 本文將逐步指導您如何建立一個WordPress博客,從主題選擇到使用插件提升安全性和性能,助您輕鬆創建自己的網站。 選擇博客主題和方向 在購買域名或註冊主機之前,最好先確定您計劃涵蓋的主題。個人網站可以圍繞旅行、烹飪、產品評論、音樂或任何激發您興趣的愛好展開。專注於您真正感興趣的領域可以鼓勵持續寫作

如何在父分類的存檔頁面上顯示子分類 如何在父分類的存檔頁面上顯示子分類 Apr 19, 2025 pm 11:54 PM

您想了解如何在父分類存檔頁面上顯示子分類嗎?在自定義分類存檔頁面時,您可能需要執行此操作,以使其對訪問者更有用。在本文中,我們將向您展示如何在父分類存檔頁面上輕鬆顯示子分類。為什麼在父分類存檔頁面上顯示子分類?通過在父分類存檔頁面上顯示所有子分類,您可以使其不那麼通用,對訪問者更有用。例如,如果您運行一個關於書籍的WordPress博客,並且有一個名為“主題”的分類法,那麼您可以添加“小說”、“非小說”等子分類法,以便您的讀者可以

如何在 WordPress 中獲取登錄用戶信息以獲得個性化結果 如何在 WordPress 中獲取登錄用戶信息以獲得個性化結果 Apr 19, 2025 pm 11:57 PM

最近,我們向您展示瞭如何通過允許用戶將自己喜歡的帖子保存在個性化庫中來為用戶創建個性化體驗。您可以通過在某些地方(即歡迎屏幕)使用他們的名字,將個性化結果提升到另一個水平。幸運的是,WordPress使獲取登錄用戶的信息變得非常容易。在本文中,我們將向您展示如何檢索與當前登錄用戶相關的信息。我們將利用get_currentuserinfo(); 功能。這可以在主題中的任何地方使用(頁眉、頁腳、側邊欄、頁面模板等)。為了使其工作,用戶必須登錄。因此我們需要使用

wordpress文章列表怎麼調 wordpress文章列表怎麼調 Apr 20, 2025 am 10:48 AM

有四種方法可以調整 WordPress 文章列表:使用主題選項、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代碼(在 functions.php 文件中添加設置)或直接修改 WordPress 數據庫。

對於初學者來說,WordPress容易嗎? 對於初學者來說,WordPress容易嗎? Apr 03, 2025 am 12:02 AM

WordPress對初學者來說容易上手。 1.登錄後台後,用戶界面直觀,簡潔的儀表板提供所有必要功能鏈接。 2.基本操作包括創建和編輯內容,所見即所得的編輯器簡化了內容創建。 3.初學者可以通過插件和主題擴展網站功能,學習曲線存在但可以通過實踐掌握。

如何在 WordPress 中按帖子過期日期對帖子進行排序 如何在 WordPress 中按帖子過期日期對帖子進行排序 Apr 19, 2025 pm 11:48 PM

過去,我們分享過如何使用PostExpirator插件使WordPress中的帖子過期。好吧,在創建活動列表網站時,我們發現這個插件非常有用。我們可以輕鬆刪除過期的活動列表。其次,多虧了這個插件,按帖子過期日期對帖子進行排序也非常容易。在本文中,我們將向您展示如何在WordPress中按帖子過期日期對帖子進行排序。更新了代碼以反映插件中更改自定義字段名稱的更改。感謝Tajim在評論中讓我們知道。在我們的特定項目中,我們將事件作為自定義帖子類型。現在

如何在 WordPress 中顯示查詢數量和頁面加載時間 如何在 WordPress 中顯示查詢數量和頁面加載時間 Apr 19, 2025 pm 11:51 PM

我們的一位用戶詢問其他網站如何在頁腳中顯示查詢數量和頁面加載時間。您經常會在網站的頁腳中看到這一點,它可能會顯示類似以下內容:“1.248秒內64個查詢”。在本文中,我們將向您展示如何在WordPress中顯示查詢數量和頁面加載時間。只需將以下代碼粘貼到主題文件中您喜歡的任何位置(例如footer.php)。 queriesin

我可以在3天內學習WordPress嗎? 我可以在3天內學習WordPress嗎? Apr 09, 2025 am 12:16 AM

能在三天內學會WordPress。 1.掌握基礎知識,如主題、插件等。 2.理解核心功能,包括安裝和工作原理。 3.通過示例學習基本和高級用法。 4.了解調試技巧和性能優化建議。

See all articles