2016-12-01 4 views
2

Я пытаюсь включить функцию webusb в chrome для ее проверки. Я пытаюсь запустить эту демонстрацию (https://github.com/webusb/arduino) локально на моем веб-сервере, но это не сработает, вместо этого версия, опубликованная в github, работает.Устранение неполадок webusb в chrome

Моей установка:

  • Apache веб-сервер виртуального хост с поддержкой SSL с сертификатом,
  • Последнего Google Chrome с webusb и экспериментальный API флагами позволил
  • импортированного selfsigned сертификата в Chrome, чтобы сделал доверять как действительный cerficate
  • Удалить происхождение Trials мета из демки

Но когда я обращаюсь к демо-странице, я получил ошибку javascript, потому что navigator.usb не определен.

Что не так в моей настройке, почему navigator.usb не включен в моей локальной настройке, но включен, когда я просматриваю онлайн-демо из того же браузера?

ответ

5

Чтобы получить это и работает, вы должны включить Experimental Web Platform особенности, вы можете найти их в тростнике Chrome:

chrome://flags/#enable-experimental-web-platform-features

Теперь navigator.usb будут доступны, однако, если вы» re развивается на localhost, вы не увидите никаких устройств. Чтобы выучить устройства, вы должны загружать Chrome с помощью --disable-webusb-security, который будет выдавать уведомление о том, что безопасность пострадает и позволит вам видеть все подключенные устройства. Для более подробного объяснения см. https://developers.google.com/web/updates/2016/03/access-usb-devices-on-the-web

+0

Здравствуйте, я попытался выполнить шаги в ссылке, которую вы дали «для более подробного объяснения», но не повезло, requestDevice (... фильтры ... blah blah blah ..) . vendorId ...) выдает сообщение об ошибке «SecurityError: должен обрабатывать жест пользователя, чтобы показать запрос на разрешение». и getDevices() возвращается с 0 устройствами. хром Версия 58.0.3029.96 (64-разрядная версия) и работает хром с битой файла: Taskkill/F/IM chrome.exe начать chrome.exe --args --disable-веб-безопасности --user-данных -dir = "c:/chromedev" – user3772575

+1

Должно быть взаимодействие с пользователем, прежде чем пытаться что-либо сделать, в большинстве случаев это означает, что вы должны инициировать соединение после нажатия кнопки или чего-то подобного. –

+0

Мое устройство - это просто пользовательский NFC-ридер для наших тегов NFC, которые собирают данные, никаких кнопок на нем, у нас есть настольное приложение, которое отправляет сообщение читателю, чтобы читатель мог начать сканирование тегов, но без ручки на Я не уверен, как отправить это сообщение читателю. когда я работал с chrome.serial, я смог получить ручку для устройства (но chrome.serial постепенно прекращается, поэтому мы не хотим его использовать), подумал, может быть, они устарели для этой версии, поскольку ее еще экспериментальная , – user3772575