WebUSB API, standart olmayan Evrensel Seri Yol (USB) ile uyumlu cihazları web'e sunar. Bu sayfada, API'nin uzantılara özgü yönleri açıklanmaktadır. WebUSB API ile ilgili tüm ayrıntılar için MDN'ye bakın.
Uzantılarda kullanılabilirlik
Chrome 118 veya sonraki sürümler.
İzinler
Manifest dosyası izni gerekmez ancak WebUSB, tarayıcının kullanıcı izni akışını tetikler.
Manifest
Bu API için manifest anahtarı gerekmez.
Destekleyici bağlamlar
Bu API neredeyse her bağlamda kullanılabilir. WebUSB.requestDevice()
yöntemi, uzantı hizmet işçilerinde kullanılamaz. Ayrıntılar için sonraki bölüme bakabilirsiniz.
Bu API, bir uzantı hizmet işçisinde kullanıldığında cihaz bağlantı oturumu, hizmet işçisini etkin durumda tutar.
Chrome uzantısı farklılıkları
WebUSB, uzantı hizmeti çalışanları tarafından kullanılabilir ancak USBDevice örneğiyle çözülen bir promise döndüren WebUSB.requestDevice()
, uzantı hizmeti çalışanında çağrılamaz. Bu sorunun üstesinden gelmek için uzantı hizmet işçisi dışında bir uzantı sayfasından requestDevice()
'ü arayın ve uzantı hizmet işçisine mesaj gönderin.
Aşağıdaki kod, kullanıcı hareketi gerektiren bir izin akışının parçası olarak requestDevice()
öğesini çağırarak tipik bir kalıbı izler. Cihaz alındığında hizmet çalışanına bir mesaj gönderir. Bu mesajdaki çalışan, getDevices()
aracını kullanarak cihazı alabilir.
popup.js:
myButton.addEventListener("click", async () => {
await navigator.usb.requestDevice({
filters: [{ vendorId: 0x1234, productId: 0x5678 }],
});
chrome.runtime.sendMessage("newDevice");
});
service-worker.js
chrome.runtime.onMessage.addListener(async (message) => {
if (message === "newDevice") {
const devices = await navigator.usb.getDevices();
for (const device of devices) {
// open device connection.
await device.open();
}
}
});