XRSession: inputsourceschange 事件

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

当可用的 WebXR 输入设备集合发生变化时,会向 XRSession 发送 inputsourceschange 事件。

语法

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

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

oninputsourceschange = (event) => { }

事件类型

一个 XRInputSourcesChangeEvent。继承自 Event

Event XRInputSourcesChangeEvent

事件属性

除了下面列出的属性之外,父接口 Event 的属性也可使用。

added 只读

一个零个或多个 XRInputSource 对象的数组,每个对象代表最近连接或启用的输入设备。

removed 只读

一个零个或多个 XRInputSource 对象的数组,代表最近断开连接或禁用的输入设备。

session 只读

此输入源更改事件正在定向的 XRSession

描述

触发

当可用的 WebXR 输入设备集合发生变化时触发。

用例

您可以使用此事件来检测新可用的设备或设备何时变得不可用。

示例

以下示例显示了如何设置一个事件处理程序,该处理程序使用 inputsourceschange 事件来检测新可用的指向设备,并加载它们的模型,以便在下一个动画帧中显示它们。

js
xrSession.addEventListener("inputsourceschange", onInputSourcesChange);

function onInputSourcesChange(event) {
  for (const input of event.added) {
    if (input.targetRayMode === "tracked-pointer") {
      loadControllerMesh(input);
    }
  }
}

您还可以通过设置 oninputsourceschange 事件处理程序来为 inputsourceschange 事件添加处理程序。

js
xrSession.oninputsourceschange = onInputSourcesChange;

规范

规范
WebXR Device API
# eventdef-xrsession-inputsourceschange
WebXR Device API
# dom-xrsession-oninputsourceschange

浏览器兼容性