Langkau ke kandungan

Barcode Scanner Emulator

Pengimbas Berfungsi dalam Notepad tetapi Tidak dalam POS

Ini salah satu isu kod bar yang paling kerap dilaporkan, dan hampir selalu bermaksud pengimbas serta sambungan baik — pepijatnya ialah cara aplikasi anda mengendalikan input papan kekunci.

Masalah

Mengimbas ke dalam editor teks biasa menghasilkan nilai yang betul setiap kali, tetapi mengimbas ke dalam sistem POS, aplikasi web, atau alat dalaman tidak menghasilkan apa-apa, input separa, atau kelakuan yang salah.

Punca yang mungkin

  • Medan sasaran tidak mempunyai fokus papan kekunci semasa imbasan, atau fokus berada pada elemen yang bukan input
  • Pengendali keydown memanggil preventDefault() dengan cara yang menyekat kemasukan aksara
  • Aplikasi bergantung pada peristiwa paste atau input yang tidak dicetuskan oleh ketukan kekunci pengimbas seperti yang anda jangkakan
  • Topeng input atau ungkapan nalar pengesahan menolak aksara yang sah dalam data yang diimbas
  • Akhiran ENTER/TAB mencetuskan tindakan yang tidak dimaksudkan (menghantar borang terlalu awal, menutup modal, menavigasi keluar)
  • Imbasan berlaku lebih pantas daripada pengendali input yang dideboun atau dithrotel dapat mendaftarkan setiap ketukan kekunci

Aliran kerja diagnosis

  1. Buka Penguji Peristiwa Papan Kekunci dalam pelayar yang sama dan imbas kod bar. Jika setiap aksara dilog dengan betul di sini, pelayar dan sistem pengendalian menerima peristiwa dengan baik, jadi pepijatnya ialah pengendalian peristiwa aplikasi anda.
  2. Semak sama ada medan input anda berfokus sejurus sebelum imbasan berlaku dalam aliran kerja sebenar (bukan hanya apabila anda mengkliknya secara manual untuk ujian).
  3. Buka konsol DevTools pelayar dan semak ralat JavaScript yang dilempar semasa imbasan — ralat di tengah pengendali boleh menghentikan pemprosesan ketukan kekunci seterusnya secara senyap.
  4. Buang sementara sebarang topeng input, pengesahan, atau logik debounce dan uji semula untuk mengasingkan lapisan yang menggugurkan input.
  5. Semak sama ada aplikasi anda mendengar keypress (ditamatkan dan tidak boleh dipercayai untuk sesetengah kekunci) dan bukannya keydown/keyup.

Cara membaiki

  • Pastikan medan sasaran difokuskan secara pengaturcaraan apabila aliran kerja menjangkakan imbasan (contohnya sejurus selepas menambah item baris)
  • Gantikan pendengar keypress dengan keydown/keyup, kerana keypress ditamatkan dan mengendalikan sesetengah kekunci secara tidak konsisten
  • Audit sebarang panggilan preventDefault() dalam pengendali papan kekunci supaya ia tidak menyekat kekunci aksara yang sah
  • Longgarkan topeng input dan pengesahan supaya menerima julat aksara penuh yang boleh dihasilkan simbologi kod bar anda, kemudian sahkan nilai yang telah dipasang dan bukannya ketukan kekunci individu
  • Padankan akhiran pengimbas dengan apa yang dijangka borang anda (lihat Akhiran ENTER dan TAB)

Alat berkaitan

Penguji Peristiwa Papan Kekunci · Penguji Input Kod Bar