如何获得访问我自己的扩展资源(特定页面)的权限?

时间:2012-04-02 16:06:29

标签: google-chrome-extension

由于Chrome API最近发生了变化,我的插件会发出此错误:

  

tabs.executeScript期间出错:无法访问url的内容   “铬扩展://ecfgljdfndkhhbmhcnelbpnhkflgiokp/cm_signature_editor.html”。   扩展清单必须请求访问此主机的权限。

这从未像现在这样。现在我想知道如何将chrome扩展的URL放入它的清单文件中:

我知道我可以像我这样在我的扩展程序中获取网址或资源:

chrome.extension.getURL('/manifest.json')

但我不知道它在清单文件中是如何工作的。

是否有其他方法可以使此代码正常工作?

chrome.tabs.executeScript(null, {code:function_to_execute}, function() {
    // callback
});

有趣的是,即使我对Chrome网址进行硬编码也不起作用(我得到同样的错误)

"permissions" : [
    "tabs",
    "contextMenus",
    "chrome-extension://ecfgljdfndkhhbmhcnelbpnhkflgiokp/*"
  ],

4 个答案:

答案 0 :(得分:1)

我认为你不能以这种方式在扩展页面中注入脚本。 您应该只在页面中添加脚本,只需将其写入扩展HTML文件即可。 并使用chrome.extension.sendRequest和chrome.extension.onRequest在扩展页之间进行通信

答案 1 :(得分:1)

使用chrome.extension.getViews()可能会有所帮助。

答案 2 :(得分:0)

我遇到了同样的问题,下面是我做的,

  • 对于脚本,创建了一个单独的js并将其附加到正在执行executeScript的页面上。
  • 对于数据,将其设置在localstorage中,并在上面新创建的js文件中访问它

答案 3 :(得分:-1)

也许我知道你的问题是什么;)有两种方法可以在chrome.tabs.executeScript注入内容脚本:

  • 代码字符串 - 与eval
  • 类似
  • filename - 所以如果你想在你的扩展目录中执行js文件,只需传递它的名字{file: 'js/script.js'}

此外,您必须在清单权限字段中添加适当的站点主机,例如如果您想在http://example.com/page.html添加example.com主机

中执行内容脚本