XRSession: visibilitychange 事件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

visibilitychange 事件傳送給一個 XRSession 物件,以通知它何時變為可見或隱藏,或者何時變為可見但當前未獲得焦點。收到事件後,您可以檢查會話的 visibilityState 屬性值來確定新的可見性狀態。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("visibilitychange", (event) => { })

onvisibilitychange = (event) => { }

事件型別

一個 XRSessionEvent。繼承自 Event

Event XRSessionEvent

事件屬性

除了下面列出的屬性之外,父介面 Event 的屬性也可使用。

session 只讀

事件所引用的 XRSession

描述

觸發

XRSession 變得可見或隱藏,或者變得可見但當前未獲得焦點時觸發。

XRSession 收到此事件時,可見性狀態已發生更改。

用例

收到事件後,您可以檢查會話的 visibilityState 屬性值來確定新的可見性狀態。

示例

此示例演示瞭如何使用 addEventListener() 監聽 WebXR 會話上的 visibilitychange 事件。

js
navigator.xr.requestSession("inline").then((xrSession) => {
  xrSession.addEventListener("visibilitychange", (e) => {
    switch (e.session.visibilityState) {
      case "visible":
      case "visible-blurred":
        mySessionVisible(true);
        break;
      case "hidden":
        mySessionVisible(false);
        break;
    }
  });
});

當可見性狀態發生變化時,事件將被接收並分派到一個名為 mySessionVisible() 的函式,該函式帶有一個布林引數,指示會話當前是否顯示給使用者。

您也可以透過將其分配給 XRSessiononvisibilitychange 事件處理程式屬性來建立事件處理程式,如下所示:

js
xrSession.onvisibilitychange = (e) => {
  /* event handled here */
};

規範

規範
WebXR Device API
# eventdef-xrsession-visibilitychange
WebXR Device API
# dom-xrsession-onvisibilitychange

瀏覽器相容性