דילוג לתוכן

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)

כלים קשורים

בודק אירועי מקלדת · בודק קלט ברקוד