【问题标题】:access USB devices from Chrome Extension OR Communicate with Chrome App from Web Page从 Chrome 扩展程序访问 USB 设备或从网页与 Chrome 应用程序通信
【发布时间】:2016-11-25 00:21:08
【问题描述】:

我知道我们可以在 chrome 应用程序中访问 c​​hrome.hid.getDevices()。但我也听说 chrome.hid.getDevices() 只能在 chrome app 中使用。

但是我们能否以某种方式访问​​ chrome 扩展中的 chrome.hid.getDevices()。因为我需要使用 Content-script 注入脚本,以便我可以从网页中使用我的扩展功能,并且据我所知,Content-script 只能在 Chrome Extension 中使用。

有没有用网页与 Chrome 应用通信的例子?

【问题讨论】:

    标签: google-chrome-extension google-chrome-app content-script


    【解决方案1】:

    如何同时维护扩展程序和应用程序,因为应用程序可以访问 USB 设备,而扩展程序可以将脚本注入网页,您可以使用消息传递,例如 chrome.runtime.sendMessagechrome.runtime.connect 来建立扩展程序和应用程序之间的连接。

    以上两个方法的第一个参数是extensionId,可以设置外部扩展/应用ID。

    【讨论】:

    • 有样品吗?还是例子?
    • @WaqarAhmed,看看 Xan 的回答,我对 chrome 应用一无所知。
    【解决方案2】:

    如果您打算直接从网站代码调用您的函数,则不需要扩展/内容脚本作为代理。

    可以在"externally_connectable" manifest key 中将特定域列入白名单,以便能够启动messaging with your app

    之后:

    • 网页可以通过应用ID调用chrome.runtime.sendMessage().connect()
    • 应用将收到chrome.runtime.onMessageExternalonConnnectExternal 事件。

    如果在event page 中注册了这些事件的监听器,即使应用程序未启动,它也会被唤醒以处理它们。

    【讨论】:

      【解决方案3】:

      最好的办法是创建一个 C# 应用程序(或任何其他支持通过 chrome 扩展访问本机消息传递的其他应用程序),例如 shown in this google example

      这允许您从 chrome 向您的应用程序发送消息并检索结果(例如 JSON 数据或可以传递的任何其他内容)。

      在与您类似的情况下需要查询本地数据库时,我所做的是创建一个 NodeJS 应用程序,您可以像 localhost:4949/usb?slot=1 一样从扩展中查询该应用程序,并且 NodeJS 应用程序本身访问 USB或其他任何受限制的内容,获取所需的任何数据并使用 REST API 将其作为结果返回。

      我不喜欢扩展和应用程序之间的本地消息传递的想法,因此 NodeJS 服务器是一个不错的解决方案。在本地网络上使用 IPv4 IP 以及 192.168.0.16:4949 等工作

      如果需要,我可以举一个更好的例子来说明如何做到这一点

      【讨论】:

      • 嗯.. 如果这被证明是最佳答案,那将是非常令人失望的。我希望有人能找到一种方法来制作可移植的东西,比如 WebUSB、chrome.hidchrome.usb 在 chrome 扩展上下文中工作。
      • 不太可能,您必须在 chronium 上发布问题,因为 chrome 是基于开源项目 chronium。设置 NodeJS 后端实际上非常简单,在我看来是最简单的方法
      • 我做到了:bugs.chromium.org/p/chromium/issues/detail?id=823736。他们决定使用 WONTFIX。这样做的背景是向 MetaMask 添加 Ledger 支持,您提出的选项是我们已经考虑并决定不合适的选项 (github.com/MetaMask/metamask-extension/issues/…)。我为这个问题添加了一个赏金,希望有人知道更好的方法(已经有几种方法可以从网页使用 USB,而且它们都不能用于扩展,这太疯狂了),但看起来可能没有.
      • 是的,对这些有用的东西的支持确实缺乏 IMO。支持似乎不断被撤回
      • 本项目使用Chrome扩展+原生消息:github.com/gnaudio/jabra-browser-integration
      猜你喜欢
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      相关资源
      最近更新 更多