Navigator: requestMIDIAccess() 方法
Navigator 接口的 requestMIDIAccess() 方法返回一个 Promise,它代表着请求访问用户系统的 MIDI 设备。此方法是 Web MIDI API 的一部分,该 API 提供了访问、枚举和操作 MIDI 设备的方法。
此方法可能会提示用户授予访问其系统上可用 MIDI 设备的权限,或者它可能会使用先前建立的首选项来授予或拒绝访问。如果获得权限,则 Promise 会解析并返回一个 MIDIAccess 对象。
语法
js
requestMIDIAccess()
requestMIDIAccess(MIDIOptions)
参数
返回值
一个 Promise,它会解析为一个 MIDIAccess 对象。
异常
AbortErrorDOMException-
如果由于用户导航而关闭了文档或页面,则会抛出此异常。
InvalidStateErrorDOMException-
如果底层系统引发任何错误,则会抛出此异常。
NotSupportedErrorDOMException-
如果系统不支持该功能或选项,则会抛出此异常。
SecurityErrorDOMException-
如果用户或系统拒绝应用程序使用请求的选项创建 MIDIAccess 对象,或者文档不允许使用该功能(例如,由于 权限策略,或者因为用户先前拒绝了权限请求),则会抛出此异常。
安全要求
API 的访问受以下约束:
- 必须在 安全上下文 中调用该方法。
- 访问可能会受到
midiHTTP 权限策略 的限制。 - 用户必须通过用户代理特定的机制明确授予使用 API 的权限,或者必须先前已授予权限。请注意,如果权限策略拒绝访问,则无法通过用户权限授予。
可以使用 Permissions 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 |
浏览器兼容性
加载中…