【问题标题】:Using ZXing Barcode Scanner to read code into form on webpage使用 ZXing Barcode Scanner 将代码读入网页表单
【发布时间】:2014-10-30 15:58:28
【问题描述】:

我想将扫描结果发送到网页上的文本字段。我把一切都搞定了,需要从新 URL 中提取 {CODE} 并将其发送到页面。 (按照这里的说明:https://github.com/zxing/zxing/wiki/Scanning-From-Web-Pages

我遇到了两个几乎可以实现我想要的解决方案,但并不完全,我会解释原因。

解决方案 #1:使用 cookie Link

行为:

  1. 扫描后,打开新选项卡,列出扫描的代码,并为用户提供确认或放弃结果的选项。
  2. 确认后,使用 cookie 将代码移植回原始页面。

为什么它对我不起作用:

  1. 我想跳过确认页面。如果扫描不正确,用户将再次扫描。
  2. 需要互联网连接才能加载新页面。如果可能的话,我希望解决方案能够离线兼容(很像一个合适的 USB 条形码阅读器)。

解决方案 #2:使用 hashchange Link

行为:

  1. 使用 URL 哈希中的更改来捕获代码。

为什么它对我不起作用:

  1. 根据我自己和其他人的经验,此解决方案不适用于 Android 版 Chrome。

有没有办法收集扫描的代码(通过从网页调用 Barcode Scanner 应用程序启动)并将其填充到该页面上的表单中,理想情况下不会弹出额外的窗口或需要互联网连接?

请注意:我是新手。 PHP完全在我头上,我不知道如何建立数据库,我只知道AJAX的基础知识。因此,非常感谢您提供详尽的解释。

感谢您的帮助,

安德鲁

【问题讨论】:

    标签: javascript android barcode-scanner


    【解决方案1】:

    编辑:请参阅https://stackoverflow.com/a/29931389/1182988 了解更多最新答案。

    我已经在 Android 2.2 到 5.01 中使用这个小代码 sn-p 成功执行了数万次。它在默认浏览器和 Chrome 中运行良好。它在 Firefox 中不起作用;我仍在调查原因。

    window.onhashchange=function(){
            var hash = window.location.hash.substr(1);
            if (hash != "") {
                window.location.hash = "";
                processBarcode(unescape(hash));
            }
    }
    function processBarcode(code){
        //do what you need here.
    }
    function getScan(){
        var href = window.location.href;
        var ptr = href.lastIndexOf("#");
        if (ptr > 0) {
            href = href.substr(0, ptr);
        }
        window.location.href = "zxing://scan/?ret=" + escape(href +    "#{CODE}");
    }
    

    【讨论】:

    • 这很棒。我使用的是这个的一个轻微变化,除了我在getScan() 上使用了一个函数参数,这样我就可以在整个程序中重复使用getScan(code=> { /* functions with scanned code */ });,但是在找到这个答案之前我有些头疼。
    • 很好,谢谢!不要忘记查看顶部链接的另一个...它更强大。
    猜你喜欢
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多