如何通过browserAction创建新选项卡,然后执行脚本

时间:2011-04-12 05:31:06

标签: google-chrome permissions tabs

我想通过单击浏览器操作按钮创建一个选项卡,然后插入内容脚本或执行脚本。到目前为止,它运作不佳。

Background.html

chrome.browserAction.onClicked.addListener(function(tab) 
{
   chrome.tabs.create({url: "Dreamer.html"}, function(tab)    //Dreamer.html is a file in my extension
   { 
       //Add a script
       chrome.tabs.executeScript(tab.id, {file:'Dreamer.js'});
   });
});

的manifest.json

{
   "name" : " Dreamer",
   "version" : "0.1",
   "description" : "My extensionr",
   "browser_action" : {"default_icon" : "App/AppData/Images/icon.png", "default_title":"Start   Dreamer" },
   "background_page" : "App/AppData/background.html",
   "content_scripts" :[{"matches":["http://*/*"],"js":["app/view/UIManager.js"]}],
   "permissions": [ "cookies", "tabs", "http://*/*", "https://*/*" ]
}

我在后台页面中收到此错误

Error during tabs.executeScript: Cannot access contents of url "chrome-extension://femiindgnlfpdpajimkmldpgpccngfmd/Dreamer.html". Extension manifest must request permission to access this host.

我真的想知道如何创建标签(新标签页)并立即运行脚本

修改

我正在创建的应用程序类型需要执行以下操作:

- 允许用户通过单击browserAction按钮来创建新选项卡 - 在创建新标签时,我的扩展程序(Dreamer.html)中的文件被打开 - 添加内容脚本或在新选项卡中执行脚本

由于

1 个答案:

答案 0 :(得分:0)

是否有任何特殊原因需要注入脚本?由于Dreamer.html和Dreamer.js似乎都是硬编码的,你可以在前者中加入<script type="text/javascript" src="Dreamer.js"></script>,对吗?

作为附带好处,如果您需要将信息发送到后台页面,您可以使用chrome.extension.getBackgroundPage()直接访问它,而不是设置通常附带内容脚本的复杂侦听器。

注入内容脚本用于在扩展沙箱之外注入脚本。然而,Dreamer.html是扩展的一部分。

修改

如果你想要一个(笨重的)如何在扩展页面中执行脚本的例子,请参见:

http://code.google.com/p/chromium/issues/detail?id=30756#c11

但是,我不认为它适用于你的情况。