İçeriğe atla

Barcode Scanner Emulator

Okuyucu Notepad’de Çalışıyor ama POS’ta Çalışmıyor

Bu, en çok bildirilen barkod sorunlarından biridir ve neredeyse her zaman okuyucu ile bağlantının sağlam olduğu anlamına gelir. Hata, uygulamanızın klavye girişini nasıl işlediğindedir.

Sorun

Düz bir metin düzenleyiciye tarama her seferinde doğru değeri üretir, ancak POS sisteminize, web uygulamanıza veya iç aracınıza tarama hiçbir şey, kısmi giriş veya yanlış davranış üretir.

Olası nedenler

  • Hedef alan tarama anında klavye odağına sahip değildir veya odak bir giriş öğesinde değildir
  • Bir keydown işleyicisi karakter girişini engelleyecek şekilde preventDefault() çağırır
  • Uygulama, okuyucu tuş vuruşlarının beklediğiniz biçimde doğal olarak tetiklemediği paste veya input olaylarına dayanır
  • Bir giriş maskesi veya doğrulama düzenli ifadesi taranan yükteki geçerli bir karakteri reddeder
  • ENTER/TAB soneki istenmeyen bir eylem tetikler (formu erken gönderme, kalıcı pencereyi kapatma, başka yere gitme)
  • Tarama, debounce veya throttle uygulanmış bir giriş işleyicisinin her tuş vuruşunu kaydedebileceğinden hızlıdır

Tanı akışı

  1. Aynı tarayıcıda Klavye Olayı Test Aracı açın ve barkodu tarayın. Her karakter burada doğru günlüğe yazılıyorsa tarayıcı ve işletim sistemi olayları sorunsuz alıyordur; hata uygulamanızın olay işlemesindedir.
  2. Gerçek akışta tarama olmadan hemen önce giriş alanınızın odakta olup olmadığını kontrol edin (yalnızca test için elle tıkladığınızda değil).
  3. Tarayıcınızın DevTools konsolunu açın ve tarama sırasında fırlatılan JavaScript hatalarına bakın. İşleyici ortasında fırlatılan bir hata, sonraki tuş vuruşlarının işlenmesini sessizce durdurabilir.
  4. Hangi katmanın girişi düşürdüğünü yalıtmak için giriş maskesini, doğrulamayı veya debounce mantığını geçici olarak kaldırıp yeniden test edin.
  5. Uygulamanızın keydown/keyup yerine keypress dinleyip dinlemediğine bakın (keypress kullanımdan kaldırılmıştır ve bazı tuşlar için güvenilmezdir).

Nasıl düzeltilir

  • Akış bir tarama beklediğinde hedef alanın programlı olarak odakta olmasını sağlayın (örneğin bir satır eklendikten hemen sonra)
  • keypress kullanımdan kalktığı ve bazı tuşları tutarsız işlediği için keypress dinleyicilerini keydown/keyup ile değiştirin
  • Klavye işleyicilerindeki preventDefault() çağrılarını, meşru karakter tuşlarını engellemediklerinden emin olmak için gözden geçirin
  • Giriş maskelerini ve doğrulamayı barkod sembolojilerinizin üretebileceği tam karakter aralığını kabul edecek şekilde gevşetin, ardından tek tek tuş vuruşları yerine birleştirilmiş değeri doğrulayın
  • Okuyucunun sonekini formunuzun beklediğiyle eşleştirin (bkz. Barkod Okuyucularda ENTER ve TAB Sonekleri)

İlgili araçlar

Klavye Olayı Test Aracı · Barkod Giriş Test Aracı