सामग्री पर जाएँ

Barcode Scanner Emulator

स्कैनर Notepad में चलता है लेकिन POS में नहीं

यह सबसे अधिक रिपोर्ट की गई बारकोड समस्याओं में से एक है, और लगभग हमेशा मतलब है कि स्कैनर और कनेक्शन ठीक हैं — बग इस बात में है कि आपका एप्लिकेशन कीबोर्ड इनपुट कैसे संभालता है।

समस्या

सादे टेक्स्ट एडिटर में स्कैन हर बार सही मान देता है, लेकिन आपके POS सिस्टम, वेब ऐप या आंतरिक टूल में स्कैन कुछ नहीं, आंशिक इनपुट, या गलत व्यवहार देता है।

संभावित कारण

  • स्कैन के समय लक्ष्य फ़ील्ड के पास कीबोर्ड फ़ोकस नहीं है, या फ़ोकस ऐसे एलिमेंट पर है जो इनपुट नहीं
  • keydown हैंडलर preventDefault() को ऐसे तरीके से कॉल करता है जो अक्षर एंट्री रोक देता है
  • ऐप paste या input इवेंट पर निर्भर है, जिन्हें स्कैनर कीस्ट्रोक आपकी अपेक्षा के अनुसार स्वाभाविक रूप से ट्रिगर नहीं करते
  • इनपुट मास्क या सत्यापन रेगेक्स स्कैन किए पेलोड में मान्य अक्षर को अस्वीकार करता है
  • ENTER/TAB प्रत्यय अनचाही क्रिया चलाता है (फ़ॉर्म जल्दी सबमिट, मोडल बंद, कहीं और नेविगेट)
  • स्कैन इतना तेज़ है कि डिबाउंस या थ्रॉटल किया इनपुट हैंडलर हर कीस्ट्रोक दर्ज नहीं कर पाता

निदान वर्कफ़्लो

  1. उसी ब्राउज़र में कीबोर्ड इवेंट टेस्टर खोलें और बारकोड स्कैन करें। अगर यहाँ हर अक्षर सही लॉग होता है, ब्राउज़र और ऑपरेटिंग सिस्टम इवेंट ठीक पा रहे हैं, इसलिए बग आपके ऐप की इवेंट हैंडलिंग में है।
  2. जाँचें कि वास्तविक वर्कफ़्लो में स्कैन से ठीक पहले आपका इनपुट फ़ील्ड फ़ोकस में है (केवल तब नहीं जब आप परीक्षण के लिए मैन्युअल क्लिक करें)।
  3. ब्राउज़र का DevTools कंसोल खोलें और स्कैन के दौरान फेंकी JavaScript त्रुटियाँ देखें — हैंडलर के बीच में फेंकी त्रुटि आगे के कीस्ट्रोक की प्रोसेसिंग चुपचाप रोक सकती है।
  4. इनपुट मास्क, सत्यापन या डिबाउंस लॉजिक अस्थायी रूप से हटाएँ और दोबारा परखें ताकि यह अलग हो कि कौन-सी परत इनपुट गिरा रही है।
  5. जाँचें कि आपका ऐप keydown/keyup के बजाय keypress सुनता है या नहीं (keypress अप्रचलित है और कुछ कुंजियों के लिए अविश्वसनीय)।

कैसे ठीक करें

  • सुनिश्चित करें कि जब भी वर्कफ़्लो स्कैन की अपेक्षा करे, लक्ष्य फ़ील्ड प्रोग्रामेटिक रूप से फ़ोकस हो (उदाहरण: लाइन आइटम जोड़ने के तुरंत बाद)
  • keypress लिसनर को keydown/keyup से बदलें, क्योंकि keypress अप्रचलित है और कुछ कुंजियाँ असंगत संभालता है
  • कीबोर्ड हैंडलर में preventDefault() कॉल की जाँच करें ताकि वे वैध अक्षर कुंजियाँ न रोकें
  • इनपुट मास्क और सत्यापन ढीले करें ताकि वे आपकी बारकोड सिम्बोलॉजी द्वारा बन सकने वाली पूरी अक्षर-श्रेणी स्वीकार करें, फिर अलग-अलग कीस्ट्रोक के बजाय जुड़ा हुआ मान सत्यापित करें
  • स्कैनर का प्रत्यय उस चीज़ से मिलाएँ जिसकी आपके फ़ॉर्म को अपेक्षा है (देखें ENTER बनाम TAB प्रत्यय)

संबंधित टूल

कीबोर्ड इवेंट टेस्टर · बारकोड इनपुट टेस्टर