2014-09-05 2 views
0

Я бы хотел отправить результат сканирования в текстовое поле на веб-странице. Я получаю все до такой степени, что необходимо вытащить {CODE} из нового URL-адреса и отправить его на страницу. (Следуя инструкциям здесь: https://github.com/zxing/zxing/wiki/Scanning-From-Web-Pages)Использование ZXing Barcode Scanner для чтения кода в форме на веб-странице

Я столкнулся с двумя решениями, которые почти достигают того, что я хочу, но не совсем, и я объясню, почему.

Решение # 1: с помощью печеньяLink

Поведение:

  1. После сканирования, открывает новую вкладку, листинг кода отсканированные и дает опцию пользователя, чтобы подтвердить или отменить результат.
  2. При подтверждении переносит код обратно на исходную страницу с помощью файла cookie.

Почему это не работает для меня:

  1. Я хотел бы, чтобы пропустить страницу подтверждения. Если сканирование неверно, пользователь сканирует его снова.
  2. Требуется подключение к Интернету для загрузки новой страницы. Если это возможно, я бы хотел, чтобы решение было автономным (как USB-считыватель штрих-кода).

Решение # 2: с помощью hashchangeLink

Поведение:

  1. Использует изменения в URL хэш, чтобы захватить код.

Почему это не работает для меня:

  1. По моему собственному опыту и другим, это решение не работает в Chrome для Android.

Есть ли способ собрать отсканированный код, инициированный вызовом приложения сканера штрих-кода с веб-страницы, и заполнить его в форме на этой странице, в идеале без появления дополнительных окон или необходимости подключения к Интернету?

Обратите внимание: я новичок. PHP полностью над моей головой, я не знаю, как создать базу данных, и я знаю только основы AJAX. Таким образом, тщательное объяснение было бы очень оценено.

Спасибо за вашу помощь,

Эндрю

ответ

2

EDIT: См 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

+0

Ницца, спасибо! Не забудьте проверить другой, связанный сверху ... Это более надежный. – alfadog67