我正在尝试从串行设备arduino(串行监视器)读取数据。但我不希望app在新窗口中打开。它应该在chrome标签中打开。
//manifest.json
{
"manifest_version": 2,
"name": "Serial Monitor",
"description": "Monitors your serial port and allows you to read and write to it like you could with Arduino's IDE.",
"version": "1.0.4",
"app": {
"background": {
"scripts": ["background.js"]
}
},
"icons": {
"16": "extentionAssets/icon-16x16.jpeg",
"128": "extentionAssets/icon-128x128.jpeg"
},
"permissions": [
"tabs","serial"
]
}
//background.js
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('demo.html', {
bounds: {
width: 1160,
height: 960,
left: 100,
top: 100
},
minWidth: 1160,
minHeight: 960
});
});
chrome.runtime.onSuspend.addListener(function() {
// Do some simple clean-up tasks.
});
chrome.runtime.onInstalled.addListener(function() {
// chrome.storage.local.set(object items, function callback);
});
我还使用了chrome.create.tabs
功能,但没有帮助..新标签会立即打开和关闭。
答案 0 :(得分:4)
您似乎将Chrome扩展程序与Chrome应用程序混淆。
在Chrome打包的应用中,您尝试做的事情是不可能的,您的清单文件似乎是CPA所需的,而不是扩展名。更重要的是,您正在使用background.js脚本,该脚本将打开一个新的chrome应用程序窗口,其中包含demo.html页面。
如果您要引用Chrome扩展程序,则可能需要将问题标记为google-chrome-extension。
如果没有,那么答案很简单:无法在Chrome打包应用中打开标签,Chrome浏览器标签的概念不适用。
答案 1 :(得分:0)
是的,Chrome打包应用程序无法在Chrome标签页(http://developer.chrome.com/apps/about_apps.html#look)中打开,也无法访问Chrome标签页(即无法访问限制为扩展程序的chrome.tabs API)。
此外,chrome.serial API(http://developer.chrome.com/apps/serial.html)仅限于打包应用,不适用于扩展程序。要使用串行API,您需要成为打包的应用程序。要访问选项卡,您需要成为扩展名。
但是,请注意,应用和扩展程序可以使用以下方式进行通信(如果这是您需要的):http://developer.chrome.com/apps/runtime.html#method-sendMessage