2014-09-05 66 views
0

我想将扫描结果发送到网页上的文本字段。我将所有内容都收集到了需要从新URL中提取{CODE}并将其发送到页面的地步。 (按照这里的说明:https://github.com/zxing/zxing/wiki/Scanning-From-Web-Pages使用ZXing条码扫描器将代码读取到网页上的表格

我遇到了两个解决方案,几乎达到我想要的,但不完全,我会解释为什么。

解决方案1:使用CookieLink

行为:

  1. 扫描后,将打开新的标签页,列出扫描代码,并让用户选择确认或丢弃的结果。
  2. 确认后,使用cookie将代码移回原始页面。

为什么不能为我工作:

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

解决方案2:使用hashchangeLink

行为:

  1. 使用在URL哈希的变化来捕捉代码。

为什么不能为我工作:

  1. 根据我自己的经验和其他人,这种解决方案并不在Android版Chrome浏览工作。

有没有办法来收集扫描代码,从网页调用条形码扫描应用程序启动,并填充到一个表单页面上,最好不用额外的窗口弹出或者需要上网吗?

请注意:我是新手。 PHP完全凌驾于我的头上,我不知道如何构建数据库,而我只知道AJAX的基础知识。所以,一个彻底的解释将非常感激。

感谢您的帮助,

安德鲁

回答

2

编辑:https://stackoverflow.com/a/29931389/1182988更大的电流答案。

我已经有了成千上万的成功执行这个小的代码片段在Android 2.2到5.01。它在默认浏览器和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}"); 
} 
+0

这很好。除了我在getScan()函数中使用函数参数外,我使用了这个函数的一个细微变化,这样我就可以重复使用'getScan(code => {/ *函数和扫描过的代码* /});'程序,但在找到这个答案之前,我有一些严重的头痛。 – Felype 2017-06-22 17:28:15

+0

不错,谢谢!不要忘记检查另一个链接在顶部......这更强大。 – alfadog67 2017-06-22 19:48:17