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

浏览器兼容性