Navigator:requestMIDIAccess() 方法
requestMIDIAccess()
是Navigator
接口的方法,它返回一个Promise
,表示对用户系统上的 MIDI 设备的访问请求。此方法是Web MIDI API的一部分,该 API 提供了一种访问、枚举和操作 MIDI 设备的方法。
此方法可能会提示用户授予访问其系统可用的 MIDI 设备的权限,或者它可能会使用先前建立的首选项来授予或拒绝访问。如果授予权限,则Promise
解析并返回一个MIDIAccess
对象。
语法
js
requestMIDIAccess()
requestMIDIAccess(MIDIOptions)
参数
返回值
一个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 表格仅在浏览器中加载