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

问题描述:

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

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按钮
-On创建创建新的标签,文件在我的分机(Dreamer.html)打开
- 添加内容脚本或在新标签执行脚本

感谢

是有什么特别的原因需要注入脚本?由于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

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

+0

谢谢。你太棒了。 – Kennedy 2011-05-31 14:14:15