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 |
瀏覽器相容性
載入中…