Barcode Scanner Emulator
Scanner funktioniert im Notepad, aber nicht im POS
Das ist eines der am häufigsten gemeldeten Barcode-Probleme, und es bedeutet fast immer, dass Scanner und Verbindung in Ordnung sind — der Fehler liegt darin, wie Ihre Anwendung Tastatureingaben verarbeitet.
Problem
Das Scannen in einen einfachen Texteditor liefert jedes Mal den richtigen Wert, aber das Scannen in Ihr POS-System, Ihre Webanwendung oder Ihr internes Werkzeug ergibt nichts, nur einen Teil der Eingabe oder ein falsches Verhalten.
Mögliche Ursachen
- Das Zielfeld hat zum Scanzeitpunkt keinen Tastaturfokus, oder der Fokus liegt auf einem Element, das keine Eingabe ist
- Ein
keydown-Handler ruftpreventDefault()so auf, dass die Zeicheneingabe blockiert wird - Die Anwendung verlässt sich auf
paste- oderinput-Ereignisse, die Scanner-Tastenanschläge nicht so auslösen, wie Sie es erwarten - Eine Eingabemaske oder ein Validierungsausdruck weist ein gültiges Zeichen in der gescannten Nutzlast zurück
- Der Suffix ENTER/TAB löst eine unbeabsichtigte Aktion aus (Formular zu früh absenden, ein Modal schließen, wegnavigieren)
- Der Scan ist schneller, als ein entprellter oder gedrosselter Eingabe-Handler jeden Tastenanschlag registrieren kann
Diagnostischer Ablauf
- Öffnen Sie den Tastaturereignis-Tester im selben Browser und scannen Sie den Barcode. Wenn hier jedes Zeichen korrekt protokolliert wird, empfangen Browser und Betriebssystem die Ereignisse einwandfrei, der Fehler liegt also in der Ereignisbehandlung Ihrer Anwendung.
- Prüfen Sie, ob Ihr Eingabefeld unmittelbar vor dem Scan im echten Ablauf fokussiert ist (nicht nur, wenn Sie es zum Testen von Hand anklicken).
- Öffnen Sie die DevTools-Konsole des Browsers und achten Sie auf JavaScript-Fehler während des Scans — ein Fehler mitten im Handler kann die Verarbeitung weiterer Tastenanschläge stillschweigend beenden.
- Entfernen Sie vorübergehend Eingabemaske, Validierung oder Entprelllogik und testen Sie erneut, um die Schicht einzugrenzen, die die Eingabe verwirft.
- Prüfen Sie, ob Ihre Anwendung auf
keypresshört (veraltet und bei manchen Tasten unzuverlässig) statt aufkeydown/keyup.
So beheben Sie es
- Stellen Sie sicher, dass das Zielfeld programmgesteuert fokussiert wird, sobald der Ablauf einen Scan erwartet (zum Beispiel unmittelbar nach dem Hinzufügen einer Position)
- Ersetzen Sie
keypress-Listener durchkeydown/keyup, dennkeypressist veraltet und behandelt manche Tasten uneinheitlich - Prüfen Sie alle
preventDefault()-Aufrufe in Tastatur-Handlern, damit sie keine zulässigen Zeichentasten blockieren - Lockern Sie Eingabemasken und die Validierung so, dass sie den vollen Zeichenbereich Ihrer Barcode-Symbologien annehmen, und validieren Sie dann den zusammengesetzten Wert statt einzelner Tastenanschläge
- Gleichen Sie den Suffix des Scanners mit dem ab, was Ihr Formular erwartet (siehe Suffixe ENTER und TAB)