2014-09-05 62 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