Signatur
Beschreibung
Die Methode forget() der Schnittstelle HIDDevice gehört zur WebHID-API. Sie schließt eine offene Verbindung zum Gerät und widerruft die Berechtigung, die der Nutzer der Webseite zuvor über navigator.hid.requestDevice() erteilt hat. Danach liefert navigator.hid.getDevices() das Gerät nicht mehr zurück.
Einsetzen solltest du forget(), wenn der Nutzer ein Gerät bewusst „abmelden“ oder „entkoppeln“ möchte, etwa über einen Button „Gerät entfernen“ in den Einstellungen deiner Web-App. Auch bei gemeinsam genutzten Rechnern (Kiosk, Schulungsräume) ist das sinnvoll, damit der nächste Nutzer nicht automatisch Zugriff auf das Gerät hat.
Anders als HIDDevice.close(), das nur die Verbindung trennt und die Berechtigung behält, ist forget() endgültig: Um das Gerät erneut zu nutzen, muss requestDevice() wieder aufgerufen werden, und das geht nur nach einer Nutzeraktion (z. B. Klick).
Rückgabewert
Promise, das mit undefined erfüllt wird, sobald die Verbindung geschlossen und die Berechtigung entzogen ist.Beispiele
Gerät über einen Button vergessen
const btn = document.querySelector('#geraet-entfernen');
btn.addEventListener('click', async () => {
const [device] = await navigator.hid.getDevices();
if (!device) {
console.log('Kein berechtigtes Gerät vorhanden.');
return;
}
await device.forget();
console.log(`${device.productName} wurde vergessen.`);
});
Alle berechtigten Geräte zurücksetzen
const alleGeraeteVergessen = async () => {
const devices = await navigator.hid.getDevices();
await Promise.all(devices.map((d) => d.forget()));
const rest = await navigator.hid.getDevices();
console.log(`Verbleibende Geräte: ${rest.length}`);
};
alleGeraeteVergessen();
Mit Feature-Erkennung und Fehlerbehandlung
const geraetEntkoppeln = async (device) => {
if (!('hid' in navigator) || typeof device.forget !== 'function') {
console.warn('WebHID bzw. forget() wird nicht unterstützt.');
// Fallback: nur Verbindung schließen
if (device.opened) await device.close();
return;
}
try {
await device.forget();
console.log('Berechtigung entzogen, opened =', device.opened);
} catch (err) {
console.error('forget() fehlgeschlagen:', err);
}
};
// Wichtig · Fallstricke
- Browser-Kompatibilität: WebHID ist nur in Chromium-Browsern (Chrome, Edge, Opera) auf dem Desktop verfügbar;
forget()ab Version 100. Firefox und Safari unterstützen WebHID nicht – immer per Feature-Erkennung prüfen. - Erfordert einen sicheren Kontext (HTTPS oder
localhost) und kann per Permissions-Policyhidin iframes gesperrt sein. - Die Methode ist nicht in Web Workern aller Browser verfügbar; im Service Worker nur in neueren Chrome-Versionen (Erweiterungen).
- Nach
forget()ist dasHIDDevice-Objekt praktisch unbrauchbar;open()schlägt fehl. Verweise darauf solltest du im eigenen Zustand verwerfen. - Wurde dasselbe physische Gerät mehrfach als separate Schnittstellen freigegeben, kann
forget()die Berechtigung für alle zugehörigenHIDDevice-Objekte entziehen. - Für einen reinen Verbindungsabbau ohne Berechtigungsverlust
close()verwenden.