Barcode Scanner Emulator
Pemindai bekerja di Notepad tetapi tidak di POS
Ini salah satu masalah kode batang yang paling sering dilaporkan, dan hampir selalu berarti pemindai serta koneksi baik-baik saja — bug ada pada cara aplikasi Anda menangani masukan papan ketik.
Masalah
Memindai ke editor teks biasa menghasilkan nilai yang benar setiap kali, tetapi memindai ke sistem POS, aplikasi web, atau alat internal tidak menghasilkan apa-apa, masukan sebagian, atau perilaku yang salah.
Kemungkinan penyebab
- Bidang sasaran tidak memiliki fokus papan ketik saat pemindaian, atau fokus berada pada elemen yang bukan masukan
- Penangan
keydownmemanggilpreventDefault()dengan cara yang memblokir pemasukan karakter - Aplikasi mengandalkan peristiwa
pasteatauinputyang tidak dipicu ketukan pemindai seperti yang Anda harapkan - Masker masukan atau regex validasi menolak karakter yang valid di dalam muatan yang dipindai
- Akhiran ENTER/TAB memicu tindakan yang tidak diinginkan (mengirim formulir terlalu dini, menutup modal, bernavigasi pergi)
- Pemindaian terjadi lebih cepat daripada penangan masukan yang di-debounce atau di-throttle dapat mendaftarkan setiap ketukan
Alur kerja diagnosis
- Buka penguji peristiwa papan ketik di peramban yang sama dan pindai kode batang. Jika setiap karakter tercatat dengan benar di sini, peramban dan sistem operasi menerima peristiwa dengan baik, jadi bug ada pada penanganan peristiwa aplikasi Anda.
- Periksa apakah bidang masukan Anda fokus tepat sebelum pemindaian terjadi pada alur kerja yang sebenarnya (bukan hanya saat Anda mengkliknya secara manual untuk pengujian).
- Buka konsol DevTools peramban dan cari kesalahan JavaScript yang dilempar selama pemindaian — kesalahan di tengah penangan dapat diam-diam menghentikan pemrosesan ketukan berikutnya.
- Hapus sementara masker masukan, validasi, atau logika debounce lalu uji lagi untuk mengisolasi lapisan mana yang menjatuhkan masukan.
- Periksa apakah aplikasi Anda mendengarkan
keypress(usang dan tidak andal untuk beberapa tombol) alih-alihkeydown/keyup.
Cara memperbaiki
- Pastikan bidang sasaran difokuskan secara terprogram setiap kali alur kerja mengharapkan pemindaian (misalnya segera setelah menambahkan baris)
- Ganti pendengar
keypressdengankeydown/keyup, karenakeypresssudah usang dan menangani beberapa tombol secara tidak konsisten - Tinjau setiap panggilan
preventDefault()di penangan papan ketik agar tidak memblokir tombol karakter yang sah - Longgarkan masker dan validasi agar menerima seluruh rentang karakter yang dapat dihasilkan simbologi kode batang Anda, lalu validasi nilai yang sudah tersusun, bukan ketukan individual
- Sesuaikan akhiran pemindai dengan yang diharapkan formulir Anda (lihat Akhiran ENTER vs TAB)