Navigator: requestMIDIAccess() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

Navigator 介面的 requestMIDIAccess() 方法返回一個 Promise,它代表著請求訪問使用者系統的 MIDI 裝置。此方法是 Web MIDI API 的一部分,該 API 提供了訪問、列舉和操作 MIDI 裝置的方法。

此方法可能會提示使用者授予訪問其系統上可用 MIDI 裝置的許可權,或者它可能會使用先前建立的首選項來授予或拒絕訪問。如果獲得許可權,則 Promise 會解析並返回一個 MIDIAccess 物件。

語法

js
requestMIDIAccess()
requestMIDIAccess(MIDIOptions)

引數

MIDIOptions 可選

一個 Object,代表要傳遞給方法的選項。這些選項是:

sysex

一個 Boolean 值,如果設定為 true,則允許傳送和接收系統獨佔 (sysex) 訊息。預設值為 false

software

一個 Boolean 值,如果設定為 true,則允許系統使用任何已安裝的軟體合成器。預設值為 false

返回值

一個 Promise,它會解析為一個 MIDIAccess 物件。

異常

AbortError DOMException

如果由於使用者導航而關閉了文件或頁面,則會丟擲此異常。

InvalidStateError DOMException

如果底層系統引發任何錯誤,則會丟擲此異常。

NotSupportedError DOMException

如果系統不支援該功能或選項,則會丟擲此異常。

SecurityError DOMException

如果使用者或系統拒絕應用程式使用請求的選項建立 MIDIAccess 物件,或者文件不允許使用該功能(例如,由於 許可權策略,或者因為使用者先前拒絕了許可權請求),則會丟擲此異常。

安全要求

API 的訪問受以下約束:

  • 必須在 安全上下文 中呼叫該方法。
  • 訪問可能會受到 midi HTTP 許可權策略 的限制。
  • 使用者必須透過使用者代理特定的機制明確授予使用 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

瀏覽器相容性

另見