我正在尝试将某些条形码扫描到浏览器中包含的文本字段,但它会在任何浏览器中打开下载页面(chrome,firefox,ie)。 我猜测有一些等同于CTRL + J的输入会触发浏览器打开下载页面。
有人遇到过这个问题吗?有没有办法传递它(假设我的客户端不能改变他们的扫描仪配置既不是浏览器配置?)
感谢。
答案 0 :(得分:3)
您必须设置扫描仪。
Ctrl-J = 0x0A = Linefeed for Unix-like Systems
检查扫描仪型号的手镯。通常情况下,您可以找到一些可以更改设置的条形码,另一种方法是更改驱动程序,或者您的驱动程序中有设置。
答案 1 :(得分:3)
虽然发布答案已经很晚了,但我希望这有助于将来的某些人。
问题是由条形码阅读器发送的结束字符引起的。条形码阅读器的默认设置是在输入后发送CR+LF
。不幸的是,这会打开chrome中的下载页面。对此的修复非常简单,而不是配置扫描仪本身(这可能很棘手),您可以将以下脚本添加到页面中以忽略条形码扫描器发送的结束字符:
<script>
document.addEventListener('keydown', function(event) {
if( event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74 )
event.preventDefault();
});
</script>
还有一个旧的bug为此打开了chrome,但这已经关闭/未解决,因为这不是一个错误,而是更多的输入配置问题。
答案 2 :(得分:2)
用于Google Chrome浏览器的AutoControl快捷方式管理器
使用此扩展名可以禁用浏览器的任何快捷键 而且容易响应。
添加此Chrome扩展程序后,它将向您显示该教程。
答案 3 :(得分:1)
问题可以通过检查e.ctrlKey
是否为真来解决,然后我们可以忽略按键。如果按下Ctrl
键,则e.ctrlKey
为true
<script>
let data = ''
window.onload = function () {
window.document.body.addEventListener('keydown', function(event){
if( event.keyCode == 13 || event.keyCode == 16 || event.keyCode == 17 ) {
event.preventDefault();
return;
}
if(event.ctrlKey) {
event.preventDefault();
return;
}
data += event.key
console.log(data)
});
}
</script>
通过使用此代码,我们可以阻止Chrome导航到“下载页面”。
答案 4 :(得分:0)
我只有chrome这个问题。在第一次成功拍摄后,Firefox专注于google搜索栏。我有一个曼哈顿条形码阅读器。 现在我使用Web(也称为顿悟)进行管理,它是唯一可以使用的,但它不是“普通客户建议”
答案 5 :(得分:0)
像(event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74)
这样的控件不会解决问题。因为如果条形码值有&#39; J&#39;在其中的角色,你将无法真正得到barcode
结果。我们尝试添加e.ctrlKey
控件额外功能。但是这次我们只从条形码中检索一个字符。似乎通过js
解决问题很难。也许最好的选择是更改扫描仪设置。
答案 6 :(得分:0)
//I managed to focus on exactly what was being sent by Chrome, and ignore just that:
var lastKeyCode = "";
document.addEventListener('keydown', function (event) {
if (lastKeyCode == "ControlLeft" && event.code == "KeyJ")
event.preventDefault();
lastKeyCode = event.code;
});