تعرض واجهة برمجة التطبيقات WebUSB الأجهزة غير المتوافقة مع "الناقل التسلسلي العالمي" (USB) على الويب. تصف هذه الصفحة جوانب واجهة برمجة التطبيقات الخاصة بالإضافات. يُرجى الرجوع إلى MDN للحصول على التفاصيل الكاملة حول واجهة برمجة التطبيقات WebUSB.
التوفّر في الإضافات
الإصدار 118 من متصفّح Chrome أو الإصدارات الأحدث
الأذونات
لا يلزم الحصول على أذونات ملف البيان، ولكنّ WebUSB يؤدي إلى تفعيل عملية طلب إذن المستخدم في المتصفّح.
البيان
لا تحتاج واجهة برمجة التطبيقات هذه إلى مفاتيح بيان.
السياقات المتوافقة
يمكن استخدام واجهة برمجة التطبيقات هذه في أي سياق تقريبًا، ولكن لا يمكن استخدام طريقة WebUSB.requestDevice() في مشغّلي خدمات الإضافات. يُرجى الاطلاع على القسم التالي للحصول على التفاصيل.
عند استخدام واجهة برمجة التطبيقات هذه في مشغّل خدمات الإضافة، تحافظ جلسة اتصال الأجهزة على بقاء مشغّل الخدمات نشطًا.
الاختلافات في إضافات Chrome
على الرغم من أنّ WebUSB متاحة لمشغّلي الخدمات الإضافات، لا يمكن استدعاء WebUSB.requestDevice()، التي تعرض عمليّة غير مكتملة يتم تنفيذه باستخدام مثيل USBDevice، في مشغّل الخدمات الإضافة. لتجنُّب هذه المشكلة، يمكنك استدعاء requestDevice() من صفحة إضافة أخرى غير مشغّل خدمات الإضافة وإرسال رسالة إلى مشغّل خدمات الإضافة.
يتّبع الرمز البرمجي التالي نمطًا نموذجيًا من خلال استدعاء requestDevice() كجزء من عملية طلب الأذونات التي تتطلّب إيماءة من المستخدم. عند الحصول على الجهاز، يتم إرسال رسالة إلى مشغّل الخدمات، الذي يمكنه بعد ذلك استرداد الجهاز باستخدام getDevices().
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();
}
}
});