2017-08-11 223 views
0

我想从后台脚本注入一些代码到选定的选项卡上下文中,但我遇到了一些权限问题。问题executeScript权限

manifest.json的

{ 
    "manifest_version": 2, 
    "name": "prova", 
    "version": "1.0", 
    "permissions": [ 
    "activeTab" 
    ], 
    "background": { 
    "scripts": ["background.js"], 
    "persistent": false 
    }, 
    "content_scripts": [ 
    { 
     "matches": ["https://*"], 
     "css": ["mystyles.css"], 
     "js": ["myscript.js"] 
    } 
    ] 
} 

background.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
    chrome.tabs.executeScript(null,{code:"console.log('Not done!');"}); 
    sendResponse({}); 
    }); 

myscript.js

chrome.runtime.sendMessage({}, function(response) { 
    console.log("Done!"); 
    }); 

这是电子在运行tabs.executeScript

未选中runtime.lastError:RROR出现在背景控制台页面无法访问 内容。扩展清单必须请求 访问相应主机的权限。

我真的很感激每一个建议。 非常感谢。

+0

有关激活此权限的操作列表,请参阅[activeTab文档](https://developer.chrome.com/extensions/activeTab)。 – wOxxOm

回答

0

Programmatic injection部分:

把代码插入到页面中,您的分机必须具有页面跨域权限。它也必须能够使用chrome.tabs模块。您可以使用清单文件的权限字段获得这两种权限。

这意味着您需要为要运行代码的主机请求许可证。 让你从manifest.jsonpermissions部分应该是这样的:

"permissions": [ 
    "tabs", 
    "http://*.example.com/", 
] 

host match patterns看看。

编辑1:

我也注意到,您使用content-scriptprogrammatic injection。这两种在选项卡中运行代码的方式几乎可以完成相同的工作,但方式各不相同。

  1. content_script清单中的部分有助于在每个与主机模式匹配的页面上运行脚本。
  2. 编程注入(PI)也有助于运行代码(文件或字符串)。但是,应该通过清单中的部分permissions设置主机权限。 PI在脚本需要运行时很少运行,而不是在每个页面上运行。
+0

我将权限修改为:“权限”:[ “选项卡”, “”, ]但仍然出现错误。我不知道如何解决这个问题 –

+0

我利用程序注入仅用于访问页面上下文并拦截xhr调用。 –