我正在开发一个必须在运行Android 4.4的Honeywell Dolphin 75e设备上使用的Web应用程序。 集成的条形码阅读器可以在“键盘楔形”模式下操作,但只能在文本字段有焦点时使用。从javascript中捕获条形码读取器(键盘 - 楔形)事件
与桌面浏览器,我可以使用代码来捕捉条形码阅读器事件:
var BarcodesScanner = {
barcodeData: '',
deviceId: '',
symbology: '',
timestamp: 0,
dataLength: 0
};
function onScannerNavigate(barcodeData, deviceId, symbology, timestamp, dataLength){
BarcodesScanner.barcodeData = barcodeData;
BarcodesScanner.deviceId = deviceId;
BarcodesScanner.symbology = symbology;
BarcodesScanner.timestamp = timestamp;
BarcodesScanner.dataLength = dataLength;
$(BarcodesScanner).trigger('scan');
}
BarcodesScanner.tmpTimestamp = 0;
BarcodesScanner.tmpData = '';
$(document).on('keypress', function(e){
e.stopPropagation();
var keycode = (e.keyCode ? e.keyCode : e.which);
if (BarcodesScanner.tmpTimestamp < Date.now() - 500){
BarcodesScanner.tmpData = '';
BarcodesScanner.tmpTimestamp = Date.now();
}
if (keycode == 13 && BarcodesScanner.tmpData.length > 0){
onScannerNavigate(BarcodesScanner.tmpData, 'FAKE_SCANNER', '', BarcodesScanner.tmpTimestamp, BarcodesScanner.tmpData.length);
BarcodesScanner.tmpTimestamp = 0;
BarcodesScanner.tmpData = '';
} else if (e.charCode && e.charCode > 0) {
BarcodesScanner.tmpData += String.fromCharCode(e.charCode);
}
});
$(BarcodesScanner).on('scan', function(e){
alert();
});
不幸的是,它并没有在Android上工作。 是否有API允许我捕获这些事件? 或处理这个问题的其他浏览器?
编辑:
我能够拦截使用文本字段作为缓冲条形码阅读器的事件。
但在这种情况下,我不能使用任何需要我的应用程序中的焦点的控件。这是一个障碍。
BarcodesScanner.tmpInput = $('<input />', {
type: 'text',
style: 'position: fixed; top: 0; right: 0; width: 0; height: 0;'
});
$('body').append(BarcodesScanner.tmpInput);
setInterval(function(){
BarcodesScanner.tmpInput.focus();
}, 500);
BarcodesScanner.tmpInput.on('input', function(e){
if (BarcodesScanner.tmpInput.val().length > 0){
onScannerNavigate(BarcodesScanner.tmpInput.val(), 'FAKE_SCANNER', 'WEDGE', Date.now(), BarcodesScanner.tmpInput.val().length);
BarcodesScanner.tmpInput.val('')
}
});
谢谢你的分享,这是很棒的东西,我正在寻找同样的东西。 Hower,在我的应用程序中,每次扫描时都会显示键盘。这也发生在你身上吗?有关如何摆脱它的任何建议? – user1051218
通常,键盘仅在输入字段中显示,那么您是使用本答案中公开的捕获解决方案还是原始问题编辑中的文本字段缓冲区?您可以使用空键盘(https://play.google.com/store/apps/details?id=com.wparam.nullkeyboard&hl=fr)等应用停用它。 什么是您的设备? –
对于没有“楔子作为钥匙”选项的Dolphin 75e用户,您需要联系霍尼韦尔支持以获取最新的固件,因为由于授权问题,它们不在其网站上提供。相关文件是'PARISAD_56.01.13.0173.zip'。 – SystemParadox