2017-06-26 5 views
0

Ich versuche, ein Trennereignis von einem USB-Gerät mit der WebUSB-API zu erhalten.WebUSB-API addEventListener trennen nicht triggern

Ich erhalte Zugriff auf das Gerät und das Hinzufügen eines Ereignis-Listener „trennen“, die durch die folgende:

navigator.usb.requestDevice({ filters: [{ vendorId: ... ... ...}] }) 
    .then(device=> { 
      navigator.usb.addEventListener('disconnect', device => { 
        printToScreen("Message", "Device disconnect!!! "); 
      }); 
      return device.open(); 
    }) 

Zur Info: Die printToScreen() -Methode von Text zu einem div-Tag hinzufügt.

Die Gerätedosis verbinden und ich kann die Geräteberechtigung aufgelistet sehen, wenn ich auf das Schloss-Symbol in der Adressleiste klicke, und ich kann die Landing Page URL kein Problem finden. Wenn ich das Gerät abziehe, wird die gelistete Geräteberechtigung entfernt (was normal ist, weil das Gerät keine Seriennummer hat, daher kann die vom Benutzer gewährte Erlaubnis nicht beibehalten werden), aber die Disconnect-Ereignisdosis erscheint nicht. nicht sicher, was ich falsch mache.

Meine Frage ist also, wie kann ich den Callback vom Disconnect-Ereignis erkennen/erhalten? oder ist das ein Fehler und ich sollte ihn ablegen? jede Hilfe würde geschätzt werden, danke.

Sowie, nach dem Hinzufügen der Seriennummer zum Gerät, bekomme ich eine "NotFoundError: Device nicht verfügbar", wenn ich versuche, das Gerät mit "return device.open()" zu öffnen, aber die "navigator.usb.requestDevice "gibt das korrekte Gerät zurück.

+1

Nach der doppelten Überprüfung durch Ersetzen einer console.log über die "printToScreen", dann, ja, einen Fehler. –

Antwort

1

Ich habe gerade issue 737321 abgelegt, um dieses Problem zu verfolgen. Es ist ein Fehlermodus, der in der chrome.usb-API ausgeführt wurde, aber in WebUSB durchging, da die Wiedergabe von der Reihenfolge der Initialisierung der internen Chrome-Komponenten abhängt.

Update: Dieses Update wird in Chrome 61.0.3144.0 verfügbar sein.