Μετάβαση στο περιεχόμενο

Barcode Scanner Emulator

Ο σαρωτής λειτουργεί στο Notepad αλλά όχι στο POS

Αυτό είναι από τα πιο συχνά αναφερόμενα προβλήματα γραμμωτού κώδικα και σχεδόν πάντα σημαίνει ότι ο σαρωτής και η σύνδεση είναι εντάξει — το σφάλμα βρίσκεται στον τρόπο που η εφαρμογή χειρίζεται την εισαγωγή πληκτρολογίου.

Πρόβλημα

Η σάρωση σε απλό επεξεργαστή κειμένου δίνει κάθε φορά τη σωστή τιμή, αλλά η σάρωση στο σύστημα POS, στην εφαρμογή ιστού ή στο εσωτερικό εργαλείο δεν δίνει τίποτα, δίνει μερική εισαγωγή ή λανθασμένη συμπεριφορά.

Πιθανές αιτίες

  • Το πεδίο προορισμού δεν έχει εστίαση πληκτρολογίου τη στιγμή της σάρωσης ή η εστίαση είναι σε στοιχείο που δεν είναι εισαγωγή
  • Ένας χειριστής keydown καλεί το preventDefault() με τρόπο που μπλοκάρει την εισαγωγή χαρακτήρων
  • Η εφαρμογή βασίζεται σε συμβάντα paste ή input που τα πατήματα του σαρωτή δεν ενεργοποιούν όπως περιμένετε
  • Μια μάσκα εισαγωγής ή μια έκφραση επικύρωσης απορρίπτει έγκυρο χαρακτήρα στο σαρωμένο ωφέλιμο φορτίο
  • Η κατάληξη ENTER/TAB ενεργοποιεί ανεπιθύμητη ενέργεια (πρόωρη υποβολή φόρμας, κλείσιμο αποκλειστικού παραθύρου, απομάκρυνση από τη σελίδα)
  • Η σάρωση είναι ταχύτερη από όσο προλαβαίνει ένας χειριστής με απόσβεση ή περιορισμό να καταγράψει κάθε πάτημα

Διαγνωστική ροή

  1. Ανοίξτε τον ελεγκτή συμβάντων πληκτρολογίου στο ίδιο πρόγραμμα περιήγησης και σαρώστε τον κώδικα. Αν εδώ καταγράφεται σωστά κάθε χαρακτήρας, το πρόγραμμα περιήγησης και το λειτουργικό σύστημα λαμβάνουν τα συμβάντα κανονικά, οπότε το σφάλμα είναι στον χειρισμό συμβάντων της εφαρμογής.
  2. Ελέγξτε αν το πεδίο εισαγωγής έχει εστίαση ακριβώς πριν από τη σάρωση στην πραγματική ροή (όχι μόνο όταν κάνετε κλικ χειροκίνητα για τη δοκιμή).
  3. Ανοίξτε την κονσόλα DevTools του προγράμματος περιήγησης και αναζητήστε σφάλματα JavaScript κατά τη σάρωση — ένα σφάλμα στη μέση ενός χειριστή μπορεί να σταματήσει σιωπηλά την επεξεργασία των επόμενων πατημάτων.
  4. Αφαιρέστε προσωρινά μάσκα εισαγωγής, επικύρωση ή λογική απόσβεσης και δοκιμάστε ξανά για να απομονώσετε ποιο επίπεδο χάνει την εισαγωγή.
  5. Ελέγξτε αν η εφαρμογή ακούει το keypress (παρωχημένο και αναξιόπιστο για ορισμένα πλήκτρα) αντί για keydown/keyup.

Πώς να το διορθώσετε

  • Βεβαιωθείτε ότι το πεδίο προορισμού λαμβάνει εστίαση προγραμματιστικά όποτε η ροή περιμένει σάρωση (για παράδειγμα αμέσως μετά την προσθήκη γραμμής)
  • Αντικαταστήστε τους ακροατές keypress με keydown/keyup, επειδή το keypress είναι παρωχημένο και χειρίζεται ορισμένα πλήκτρα ασυνεπώς
  • Ελέγξτε τις κλήσεις preventDefault() στους χειριστές πληκτρολογίου ώστε να μην μπλοκάρουν έγκυρα πλήκτρα χαρακτήρων
  • Χαλαρώστε τις μάσκες και την επικύρωση ώστε να δέχονται όλο το εύρος χαρακτήρων που μπορούν να παράγουν οι συμβολογίες σας και επικυρώστε τη συναρμολογημένη τιμή, όχι κάθε πάτημα
  • Ταιριάξτε την κατάληξη του σαρωτή με αυτό που περιμένει η φόρμα (δείτε Καταλήξεις ENTER και TAB)

Σχετικά εργαλεία

Ελεγκτής συμβάντων πληκτρολογίου · Ελεγκτής εισαγωγής γραμμωτού κώδικα