XRSession:visibilitychange 事件

实验性: 这是一个 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表

安全上下文: 此功能仅在 安全上下文(HTTPS)中可用,某些或所有 支持的浏览器 中均如此。

visibilitychange 事件发送到 XRSession 以通知它何时变为可见或隐藏,或者何时变为可见但当前未获得焦点。收到事件后,您可以检查会话的 visibilityState 属性的值以确定新的可见性状态。

语法

在诸如 addEventListener() 的方法中使用事件名称,或设置事件处理程序属性。

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

onvisibilitychange = (event) => {};

事件类型

事件属性

除了下面列出的属性外,父接口 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 设备 API
# eventdef-xrsession-visibilitychange
WebXR 设备 API
# dom-xrsession-onvisibilitychange

浏览器兼容性

BCD 表格仅在浏览器中加载