Barcode Scanner Emulator
স্ক্যানার Notepad-এ কাজ করে, POS-এ নয়
এটি সবচেয়ে বেশি রিপোর্ট হওয়া বারকোড সমস্যাগুলোর একটি, এবং এর অর্থ প্রায় সবসময় স্ক্যানার ও সংযোগ ঠিক আছে — বাগটি আপনার অ্যাপ্লিকেশন কীবোর্ড ইনপুট কীভাবে সামলায় তাতে।
সমস্যা
সাধারণ টেক্সট এডিটরে স্ক্যান করলে প্রতিবার সঠিক মান আসে, কিন্তু আপনার POS সিস্টেম, ওয়েব অ্যাপ বা অভ্যন্তরীণ টুলে স্ক্যান করলে কিছুই আসে না, আংশিক ইনপুট আসে, বা ভুল আচরণ হয়।
সম্ভাব্য কারণ
- স্ক্যানের সময় লক্ষ্য ফিল্ডে কীবোর্ড ফোকাস নেই, অথবা ফোকাস এমন উপাদানে আছে যা ইনপুট নয়
- একটি
keydownহ্যান্ডলার এমনভাবেpreventDefault()ডাকে যা অক্ষর এন্ট্রি আটকায় - অ্যাপ
pasteবাinputইভেন্টের ওপর নির্ভর করে, যা স্ক্যানার কীস্ট্রোক আপনার প্রত্যাশা অনুসারে স্বাভাবিকভাবে ট্রিগার করে না - ইনপুট মাস্ক বা যাচাইকরণ রেজেক্স স্ক্যান করা পেলোডের একটি বৈধ অক্ষর প্রত্যাখ্যান করে
- ENTER/TAB সাফিক্স অনিচ্ছাকৃত কাজ ট্রিগার করে (ফর্ম আগেই সাবমিট, মোডাল বন্ধ, অন্য পাতায় চলে যাওয়া)
- স্ক্যান এত দ্রুত হয় যে ডিবাউন্স বা থ্রটল করা ইনপুট হ্যান্ডলার প্রতিটি কীস্ট্রোক নথিভুক্ত করতে পারে না
নির্ণয়ের ওয়ার্কফ্লো
- একই ব্রাউজারে কীবোর্ড ইভেন্ট টেস্টার খুলে বারকোড স্ক্যান করুন। এখানে প্রতিটি অক্ষর সঠিকভাবে লগ হলে ব্রাউজার ও অপারেটিং সিস্টেম ইভেন্ট ঠিক পাচ্ছে, তাই বাগ আপনার অ্যাপের ইভেন্ট হ্যান্ডলিংয়ে।
- আসল ওয়ার্কফ্লোতে স্ক্যানের ঠিক আগে আপনার ইনপুট ফিল্ড ফোকাস আছে কি না দেখুন (শুধু পরীক্ষার জন্য হাতে ক্লিক করলে নয়)।
- ব্রাউজারের DevTools কনসোল খুলে স্ক্যানের সময় ছোড়া JavaScript ত্রুটি দেখুন — হ্যান্ডলারের মাঝে ত্রুটি আরও কীস্ট্রোক প্রক্রিয়াকরণ চুপচাপ থামিয়ে দিতে পারে।
- কোন স্তর ইনপুট ফেলছে আলাদা করতে সাময়িকভাবে ইনপুট মাস্ক, যাচাইকরণ বা ডিবাউন্স লজিক সরিয়ে আবার পরীক্ষা করুন।
- আপনার অ্যাপ
keypress(অবচিত এবং কিছু কী-এর জন্য অনির্ভরযোগ্য) শোনে কি না,keydown/keyup-এর বদলে, তা দেখুন।
কীভাবে সারাবেন
- ওয়ার্কফ্লো স্ক্যান আশা করলে লক্ষ্য ফিল্ড প্রোগ্রাম্যাটিকভাবে ফোকাস পায় তা নিশ্চিত করুন (যেমন লাইন আইটেম যোগ করার ঠিক পরে)
keypressলিসেনারkeydown/keyupদিয়ে বদলান, কারণkeypressঅবচিত এবং কিছু কী অসামঞ্জস্যভাবে সামলায়- কীবোর্ড হ্যান্ডলারে
preventDefault()কল পর্যালোচনা করুন যাতে বৈধ অক্ষর কী আটকে না যায় - আপনার বারকোড সিম্বোলজি যে পূর্ণ অক্ষর পরিসর তৈরি করতে পারে তা গ্রহণ করতে ইনপুট মাস্ক/যাচাইকরণ শিথিল করুন, তারপর আলাদা কীস্ট্রোকের বদলে জোড়া মান যাচাই করুন
- স্ক্যানারের সাফিক্সকে আপনার ফর্ম যা আশা করে তার সঙ্গে মেলান (দেখুন ENTER বনাম TAB সাফিক্স)