WebUSB API

可用性有限

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

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

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

注意:此功能在 Web Workers 中可用。

WebUSB API 提供了一種將非標準通用序列匯流排 (USB) 相容裝置服務暴露給 Web 的方法,使 USB 更安全、更易於使用。

概念與用法

USB 是有線外圍裝置的行業標準。您連線到計算機的 USB 裝置通常分為多種裝置類,例如鍵盤、滑鼠、影片裝置等。這些裝置透過作業系統的類驅動程式得到支援。其中許多裝置也可以透過 WebHID API 訪問。

除了這些標準化裝置之外,還有大量裝置不屬於任何類別。這些裝置需要自定義驅動程式,並且由於需要原生程式碼才能利用它們,因此無法從 Web 訪問。安裝這些裝置之一通常涉及在製造商的網站上搜索驅動程式,如果您想在另一臺計算機上使用該裝置,則需要再次重複此過程。

WebUSB 提供了一種將這些非標準化 USB 裝置服務暴露給 Web 的方法。這意味著硬體製造商將能夠提供一種方法,使其裝置可以從 Web 訪問,而無需提供自己的 API。

連線新的 WebUSB 相容裝置時,瀏覽器會顯示一個通知,其中包含指向製造商網站的連結。到達網站後,瀏覽器會提示您授予連線裝置的許可權,然後即可使用該裝置。無需下載和安裝驅動程式。

介面

USB

提供用於在網頁中查詢和連線 USB 裝置的屬性和方法。

USBConnectionEvent

當用戶代理檢測到新的 USB 裝置已連線或斷開與主機的連線時,傳遞給 USBconnectdisconnect 事件的事件型別。

USBDevice

提供訪問配對 USB 裝置的元資料和控制它的方法。

USBInTransferResult

表示從 USB 裝置向 USB 主機傳輸資料的請求結果。

USBOutTransferResult

表示從 USB 主機向 USB 裝置傳輸資料的請求結果。

USBIsochronousInTransferPacket

表示透過同步端點從 USB 裝置向 USB 主機傳輸資料的請求中各個資料包的狀態。

USBIsochronousInTransferResult

表示從 USB 裝置向 USB 主機傳輸資料的請求結果。

USBIsochronousOutTransferPacket

表示透過同步端點從 USB 主機向 USB 裝置傳輸資料的請求中各個資料包的狀態。

USBIsochronousOutTransferResult

表示從 USB 主機向 USB 裝置傳輸資料的請求結果。

USBConfiguration

提供有關 USB 裝置的特定配置以及它支援的介面的資訊。

USBInterface

提供有關 USB 裝置提供的介面的資訊。

USBAlternateInterface

提供有關 USB 裝置提供的介面的特定配置的資訊。

USBEndPoint

提供有關 USB 裝置提供的端點的資訊。

示例

訪問已連線的裝置

以下示例演示瞭如何使用 USB.requestDevice() 訪問已連線的 Arduino 裝置,該裝置的 vendorId 為 0x2341

js
navigator.usb
  .requestDevice({ filters: [{ vendorId: 0x2341 }] })
  .then((device) => {
    console.log(device.productName); // "Arduino Micro"
    console.log(device.manufacturerName); // "Arduino LLC"
  })
  .catch((error) => {
    console.error(error);
  });

查詢所有已連線的裝置

您可以使用 USB.getDevices() 查詢所有已連線的裝置。在以下示例中,連線了 Arduino 裝置後,產品名稱和製造商名稱將列印到控制檯。

js
navigator.usb.getDevices().then((devices) => {
  devices.forEach((device) => {
    console.log(device.productName); // "Arduino Micro"
    console.log(device.manufacturerName); // "Arduino LLC"
  });
});

規範

規範
WebUSB API

瀏覽器相容性

另見