如何在同一页面而不是弹出窗口中打开chrome app?

时间:2013-10-24 07:56:48

标签: javascript google-chrome-app

我正在尝试从串行设备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功能,但没有帮助..新标签会立即打开和关闭。

2 个答案:

答案 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