【问题标题】:How can i create a new tab via browserAction and then execute a script如何通过 browserAction 创建一个新选项卡然后执行脚本
【发布时间】:2011-08-03 14:24:27
【问题描述】:

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

背景.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) 中的一个文件被打开
-在新标签页中添加内容脚本或执行脚本

谢谢

【问题讨论】:

    标签: google-chrome permissions tabs


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多