chrome.serial / chrome.usb未定义

我试图通过chrome插件/扩展来访问串行/ USB端口。 我遵循的文件从铬USB &&铬序列,当我开始我的插件它抛出

“Uncaught TypeError:无法读取未定义的属性'getDevices'

我也尝试了谷歌Chrome样本代码,但遇到同样的问题,基本上chrome.usb / chrome.serial是未定义的。

任何建议,让我正确的方向表示赞赏。 谢谢 !

我附上我的示例代码

popup.html

<!DOCTYPE html>
<html>
  <body style="width: 300px">
    Open <a href="http://stackoverflow.com" target="_blank">this page</a> and then 
    <button id="clickme">click me</button>
    <script type="text/javascript" src="popup.js"></script>
  </body>
</html>

popup.js

function readPorts() {
    console.log("Reading ports . . . . . ")
     chrome.usb.getDevices(function(devices) {
        console.warn('chrome.usb.getDevices error: ' +
                 chrome.runtime.lastError.message);
        for (var i = 0; i < devices.length; i++) {
           console.log('Device : ' + devices[i].path + '"===' + devices[i].path + '=====');
        }
    });
}

document.getElementById('clickme').addEventListener('click', readPorts);

表现

{
  "manifest_version": 2,

  "name": "Getting started example",
  "description": "This extension will read the com ports from your machine",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html",
    "default_title": "Read com ports!"
  },
  "content_scripts": [
    {
      "matches": ["http://*/*","https://*/*"],
      "js": ["myscript.js"]
    }
  ],
  "permissions": [
    "serial",
    "usb"
  ]
}

只有Chrome应用(不是Chrome扩展程序)可以访问硬件。 查看创建Chrome应用的步骤:https://developer.chrome.com/apps/first_app


这两种API都仅限于Chrome应用。 你的清单指定了一个扩展。

Chrome扩展程序拥有完全不同的一组API。 它们重叠,但一个不是另一个的超集。

如果你想要一个内容脚本(阅读:与浏览器本身交互),它必须是一个扩展。 如果你想要USB /串行API,它必须是一个应用程序。

您必须重新思考如何与浏览器交互(应用程序有一些方法可以将自己展示给网页),或者让两者互相交流。

链接地址: http://www.djcxy.com/p/63723.html

上一篇: chrome.serial / chrome.usb undefined

下一篇: Chrome pushmessaging apis backward compatibility