AudioContext: sinkchange 事件

可用性有限

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

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

AudioContext 接口的 sinkchange 事件会在输出音频设备(因此,AudioContext.sinkId)发生更改时触发。

语法

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

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

onsinkchange = (event) => { }

事件类型

Event.

示例

可以使用 sinkchange 事件监听器来报告音频输出设备的变化。请注意,如果 sinkId 包含一个 AudioSinkInfo 对象,这表示音频已更改为不播放到任何输出设备。

js
audioCtx.addEventListener("sinkchange", () => {
  if (typeof audioCtx.sinkId === "object" && audioCtx.sinkId.type === "none") {
    console.log("Audio changed to not play on any device");
  } else {
    console.log(`Audio output device changed to ${audioCtx.sinkId}`);
  }
});

查看我们的 SetSinkId 测试示例 以获取工作代码(也请查看 源代码)。

规范

规范
Web Audio API
# eventdef-audiocontext-sinkchange

浏览器兼容性

另见