Barcode Scanner Emulator
Máy quét chạy trong Notepad nhưng không chạy trong POS
Đây là một trong những sự cố mã vạch được báo cáo nhiều nhất, và gần như luôn có nghĩa máy quét cùng kết nối vẫn ổn — lỗi nằm ở cách ứng dụng xử lý đầu vào bàn phím.
Vấn đề
Quét vào trình soạn thảo văn bản thuần luôn cho giá trị đúng, nhưng quét vào hệ POS, ứng dụng web hoặc công cụ nội bộ thì không có gì, chỉ một phần, hoặc hành vi sai.
Nguyên nhân có thể
- Trường đích không có tiêu điểm bàn phím lúc quét, hoặc tiêu điểm nằm trên phần tử không phải ô nhập
- Trình xử lý
keydowngọipreventDefault()theo cách chặn nhập ký tự - Ứng dụng dựa vào sự kiện
pastehoặcinputmà lần nhấn của máy quét không kích hoạt theo cách bạn mong - Mặt nạ nhập hoặc biểu thức chính quy xác thực từ chối một ký tự hợp lệ trong dữ liệu đã quét
- Hậu tố ENTER/TAB kích hoạt hành động ngoài ý muốn (gửi biểu mẫu sớm, đóng cửa sổ mô thức, chuyển trang)
- Lần quét nhanh hơn trình xử lý đầu vào có debounce hoặc throttle kịp ghi nhận từng lần nhấn
Quy trình chẩn đoán
- Mở trình kiểm thử sự kiện bàn phím trong cùng trình duyệt và quét mã vạch. Nếu mọi ký tự được ghi đúng ở đây, trình duyệt và hệ điều hành nhận sự kiện tốt, nên lỗi nằm ở xử lý sự kiện của ứng dụng.
- Kiểm tra trường nhập có tiêu điểm ngay trước lần quét trong quy trình thật không (không chỉ khi bạn nhấp thủ công lúc kiểm thử).
- Mở bảng điều khiển DevTools của trình duyệt và tìm lỗi JavaScript ném ra trong lúc quét — lỗi giữa trình xử lý có thể âm thầm dừng xử lý các lần nhấn tiếp theo.
- Tạm gỡ mặt nạ nhập, xác thực hoặc logic debounce rồi kiểm thử lại để khoanh lớp đang làm rơi đầu vào.
- Kiểm tra ứng dụng có lắng nghe
keypress(đã lỗi thời và không đáng tin với một số phím) thay vìkeydown/keyupkhông.
Cách sửa
- Bảo đảm trường đích được đặt tiêu điểm bằng mã mỗi khi quy trình chờ một lần quét (ví dụ ngay sau khi thêm một dòng)
- Thay trình lắng nghe
keypressbằngkeydown/keyup, vìkeypressđã lỗi thời và xử lý một số phím không nhất quán - Rà các lời gọi
preventDefault()trong trình xử lý bàn phím để chúng không chặn phím ký tự hợp lệ - Nới mặt nạ và xác thực để nhận đủ dải ký tự mà ký hiệu mã vạch của bạn có thể tạo, rồi xác thực giá trị đã ghép thay vì từng lần nhấn
- Khớp hậu tố máy quét với điều biểu mẫu mong đợi (xem Hậu tố ENTER và TAB)
Công cụ liên quan
Trình kiểm thử sự kiện bàn phím · Trình kiểm thử đầu vào mã vạch