Navigator:requestMIDIAccess() 方法

可用性有限

此功能不是基线,因为它在一些最广泛使用的浏览器中无法正常工作。

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

requestMIDIAccess()Navigator接口的方法,它返回一个Promise,表示对用户系统上的 MIDI 设备的访问请求。此方法是Web MIDI API的一部分,该 API 提供了一种访问、枚举和操作 MIDI 设备的方法。

此方法可能会提示用户授予访问其系统可用的 MIDI 设备的权限,或者它可能会使用先前建立的首选项来授予或拒绝访问。如果授予权限,则Promise解析并返回一个MIDIAccess对象。

语法

js
requestMIDIAccess()
requestMIDIAccess(MIDIOptions)

参数

MIDIOptions 可选

一个Object,表示要传递给方法的选项。这些选项是

sysex

一个Boolean值,如果设置为true,则允许发送和接收系统独占(sysex)消息。默认值为false

软件

一个Boolean值,如果设置为true,则允许系统使用任何已安装的软件合成器。默认值为false

返回值

一个Promise,它解析为一个MIDIAccess对象。

异常

AbortError DOMException

如果文档或页面由于用户导航而关闭,则抛出。

InvalidStateError DOMException

如果底层系统引发任何错误,则抛出。

NotSupportedError DOMException

如果系统不支持该功能或选项,则抛出。

SecurityError DOMException

如果用户或系统拒绝应用程序使用请求的选项创建MIDIAccess对象,或者如果文档不允许使用该功能(例如,由于权限策略,或者因为用户之前拒绝了权限请求),则会抛出此异常。

安全要求

访问此 API 受以下约束条件限制

  • 必须在安全上下文中调用此方法。
  • 访问可能会受到midi HTTP 权限策略的限制。
  • 用户必须通过特定于用户代理的机制明确授予使用 API 的权限,或者之前已授予权限。请注意,如果权限策略拒绝访问,则用户权限无法授予访问权限。

可以使用权限 API方法navigator.permissions.query()查询权限状态,并传递具有midi权限和(可选)sysex属性的权限描述符。

js
navigator.permissions.query({ name: "midi", sysex: true }).then((result) => {
  if (result.state === "granted") {
    // Access granted.
  } else if (result.state === "prompt") {
    // Using API will prompt for permission
  }
  // Permission was denied by user prompt or permission policy
});

示例

请求 MIDI 访问权限

在以下示例中,Navigator.requestMIDIAccess()方法返回MIDIAccess对象,该对象允许访问有关输入和输出 MIDI 端口的信息。

js
navigator.requestMIDIAccess().then((access) => {
  // Get lists of available MIDI controllers
  const inputs = access.inputs.values();
  const outputs = access.outputs.values();
  // …
});

规范

规范
Web MIDI API
# dom-navigator-requestmidiaccess

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅