Javascript USB条形码扫描仪打开浏览器';s下载页面

Javascript USB条形码扫描仪打开浏览器';s下载页面,javascript,browser,barcode,barcode-scanner,Javascript,Browser,Barcode,Barcode Scanner,我试图将一些条形码扫描到我的浏览器中包含的文本字段,但它会在任何浏览器(chrome、firefox、ie)中打开下载页面。 我猜有一些输入相当于CTRL+J,它会触发浏览器打开下载页面 有人遇到过这个问题吗?有没有办法传递它(假设我的客户端无法更改其扫描仪配置或浏览器配置) 谢谢。您必须设置扫描仪 Ctrl-J = 0x0A = Linefeed for Unix-like Systems 请查看扫描仪型号的手册。通常情况下,您可以找到一些条形码来更改您的设置,另一种方法是更改您的驱动程序,

我试图将一些条形码扫描到我的浏览器中包含的文本字段,但它会在任何浏览器(chrome、firefox、ie)中打开下载页面。 我猜有一些输入相当于CTRL+J,它会触发浏览器打开下载页面

有人遇到过这个问题吗?有没有办法传递它(假设我的客户端无法更改其扫描仪配置或浏览器配置)


谢谢。

您必须设置扫描仪

Ctrl-J = 0x0A = Linefeed for Unix-like Systems

请查看扫描仪型号的手册。通常情况下,您可以找到一些条形码来更改您的设置,另一种方法是更改您的驱动程序,或者您的驱动程序中有相应的设置。

我只对chrome有此问题。Firefox focus在第一次成功拍摄后进入谷歌搜索栏。我有一台曼哈顿条形码阅读器。
现在我设法使用Web(也称为epiphany),它是唯一有效的,但它不是“普通客户建议”

虽然现在发布答案已经晚了,但我希望这对将来的人有所帮助

问题是由于条形码读取器发送的结束字符造成的。我的条形码阅读器的默认设置是在输入后发送
CR+LF
。不幸的是,这会在chrome中打开下载页面。对此的修复非常简单,您可以将以下脚本添加到页面以忽略条形码扫描仪发送的结束字符,而不是配置扫描仪本身(这可能很棘手):

<script>
  document.addEventListener('keydown', function(event) {
    if( event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74 )
      event.preventDefault();
  });
</script>

document.addEventListener('keydown',函数(事件){
if(event.keyCode==13 | | event.keyCode==17 | | event.keyCode==74)
event.preventDefault();
});

chrome还为此打开了一个旧的窗口,但这已关闭/未解决,因为这不是一个bug,而是一个输入配置问题。

(event.keyCode==13 | | event.keyCode==17 | | event.keyCode==74)这样放置控件不会解决问题。因为如果条形码值中有“J”字符,您将无法真实地获得
条形码
结果。我们尝试添加
e.ctrlKey
control-extra。但这次我们只从条形码中检索一个字符。通过
js
解决问题似乎很难。也许最好的选择是更改扫描仪设置。

通过检查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>

让数据=“”
window.onload=函数(){
window.document.body.addEventListener('keydown',函数(事件){
if(event.keyCode==13 | | event.keyCode==16 | | event.keyCode==17){
event.preventDefault();
返回;
}
if(event.ctrlKey){
event.preventDefault();
返回;
}
数据+=事件.key
console.log(数据)
});
}

通过使用此代码,我们可以阻止chrome导航到下载页面。

谷歌chrome的自动控制快捷方式管理器

//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;
});
使用此扩展可以禁用浏览器的任何类型的快捷键 而且它简单且响应迅速


添加此chrome扩展后,它将向大家展示教程。

我不想弄乱扫描仪设置,因为我的客户可能有不同的设置。有没有办法通过javascript代码来避免这种情况?没有办法。您无法使用JS访问该功能,并且目标OSC的扫描仪配置错误。您是否对您看到的提供此密钥重新映射选项的扫描仪品牌发表评论?我有一个Zebra DS9208和它的手册,我在网上找不到任何东西显示任何选项来重新映射扫描的键码,以便它们向键盘发射备用键。嗨。我解决了这个问题,在获取一个键关闭事件时忽略了“CTRL”键。我正在检查按下的键是否为CTRL,如果是,我什么也不做。该解决方案的唯一问题是复制粘贴和涉及CTRL键的其他内容在该文本字段组件中不起作用。就我而言,我不需要它们。希望这有帮助。嗨,我“解决”了将条形码从LF+CR编程为仅CR的问题。告诉客户有点痛苦,但我现在还在工作。你可以尝试使用InternetExplorer11,或者按照MustafaSabir的回答,对曼哈顿SD313B没问题。