我想通过单击浏览器操作按钮创建一个选项卡,然后插入一个内容脚本或执行一个脚本。到目前为止,它运行得不太好。
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)中打开一个文件
-在新标签
谢谢
是否有什么特别的原因需要注入脚本?由于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
我认为这并不适用于你的情况。