所以,我正在努力制作一个仅适用于www.google.com/bbb及其子网页的扩展程序,例如www.google.com/bbb/ccc,但不是www.google.com/ AAA。
我的清单有权限:
"permissions": ["tabs", "http://www.google.com/bbb*"],
但它仍然适用于www.google.com下的任何页面,而不仅仅是我想要的www.google.com/bbb。
所有这些都在background.js。
中运行答案 0 :(得分:0)
the docs 不是很清楚,但是(可能是错误或功能)主机匹配模式可以在清单的permissions
属性中声明,但不是关心路径:
"[scheme]:[host]/*"
它仅适用于scheme
和host
,并会忽略path
部分。
由于 you seem 以编程方式注入,您可以手动根据路径进行过滤:
/* In `manifest.json` */
...
"permissions": [
"tabs",
"http://www.google.com/"
],
...
/* In `background.js` */
// ...some event was captured, involving tab <tabX>...
...
var urlRegex = /^http:\/\/www.google.com/bbb/;
if (urlRegex.test(tabX.url)) {
injectCSS(tabX.id);
} // ...else do not inject CSS
...
注意:如果没有“http://www.google.com/”权限,这可以同样有效,但包含它会更有效,因为它会减少您的背景网址数量页面必须检查(和拒绝)。即它只需要检查以“http://www.google.com/”
开头的网址答案 1 :(得分:0)
我知道这是一个老问题,但这经过长时间的追捕帮助了我......(╭ರ_•)
您可以在清单文件的"content_scripts"
中添加文件,并使用其"matches"
属性,就像编写"permissions"
网址一样。然后refine your content script matches使用其"exclude_matches"
,"exclude_globs"
和"include_globs"
属性(其中“globs”是您要包含或排除的网址的一部分)。所以:
"content_scripts": [
{
"matches": [
"http://www.google.com/bbb/*"
],
"js": [
"src/inject/your_scripts.js"
],
"css": [
"src/inject/your_styles.css"
],
"run_at": "document_end"
}
],
请记住,要实现您的示例,您需要"run_at": "document_end"
,因此在DOM完成后立即注入文件,但在加载图像和帧之类的子资源之前(根据上面的链接)。希望这有助于某人!