【问题标题】:USB Barcode scanner opens browser's downloads pageUSB 条码扫描器打开浏览器的下载页面
【发布时间】:2015-01-15 09:56:51
【问题描述】:

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

有人遇到过这个问题吗?有没有办法通过它(假设我的客户不能更改他们的扫描仪配置和浏览器配置)?

谢谢。

【问题讨论】:

  • 您可以尝试使用 Internet Explorer 11 或按照 Mustafa Sabir 的回答,曼哈顿 SD313B 可以。

标签: javascript browser barcode barcode-scanner


【解决方案1】:

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

问题是由于条形码阅读器发送的结束字符造成的。我的条码阅读器的默认设置是输入后发送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】:

    您必须设置扫描仪。

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

    请检查您的扫描仪型号的手册。通常你可以找到一些条形码来改变你的设置,或者是改变你的驱动程序或者你的驱动程序中有设置。

    【讨论】:

    • 我不想弄乱扫描仪设置,因为我的客户可能有不同的设置。有没有办法通过javascript代码避免这种情况?
    • 没办法。您无法使用 JS 访问它,并且扫描仪针对目标操作系统配置错误
    • 您能否评论一下您看到的提供此密钥重新映射选项的扫描仪品牌?我有一个 Zebra DS9208,它的手册也没有我在网上找到的任何内容都显示了重新映射已扫描的键码的任何选项,以便它们向键盘发出备用键。
    【解决方案3】:

    Google Chrome 的 AutoControl 快捷方式管理器

    使用此扩展程序禁用浏览器的任何类型的快捷键 而且它简单且响应迅速。

    添加此 chrome 扩展程序后,它会向您展示教程。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        这个问题可以通过检查e.ctrlKey是否为真来解决,那么我们可以忽略按键。如果按下Ctrl 键,则e.ctrlKeytrue

        <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 导航到下载页面。

        【讨论】:

          【解决方案6】:
          //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;
          });
          

          【讨论】:

            【解决方案7】:

            我只有 chrome 有这个问题。第一次成功拍摄后,Firefox 的焦点转到 google 搜索栏。我有一个曼哈顿条形码阅读器。 目前我使用 Web(也称为顿悟)进行管理,它是唯一有效的方法,但它不是“常见的客户建议”

            【讨论】:

            • 嗨。我通过在获取按键事件时忽略“CTRL”键解决了这个问题。我正在检查按下的键是否是 CTRL,如果是,我什么也不做。该解决方案的唯一问题是复制粘贴和其他一些涉及 CTRL 键的内容在此文本字段组件中不起作用。就我而言,我不需要它们。希望这会有所帮助。
            • 嗨,我“解决”了将条形码编程为仅从 LF+ CR 到 CR 的问题。告诉客户有点痛苦,但我现在工作。
            猜你喜欢
            • 2013-01-12
            • 1970-01-01
            • 2022-07-05
            • 2011-02-22
            • 2023-03-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-12-23
            相关资源
            最近更新 更多