Chrome扩展程序适用于比应有的更多网址

问题描述 投票:0回答:2

所以,我正在努力制作一个仅适用于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中运行。

javascript google-chrome google-chrome-extension
2个回答
0
投票

the docs不是很清楚,但是(它是bug或者一个特性)主机匹配模式可以在manifest的permissions属性中声明,并不关心路径:

"[scheme]:[host]/*"

它只适用于schemehost,并将忽略path部分。


由于qazxsw poi以编程方式注入,您可以手动基于路径进行过滤:

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 ... ”权限,这可能同样有效,但包括它更有效,因为它减少了后台页面必须检查(和拒绝)的URL数量。即它只需要检查以“http://www.google.com/”开头的网址


0
投票

我知道这是一个古老的问题,但这经过长时间的追捕帮助了我...(╭ರ_•)

您可以在清单文件的http://www.google.com/中添加文件,并使用其"content_scripts"属性,就像编写"matches" URL一样。然后"permissions"使用其refine your content script matches"exclude_matches""exclude_globs"属性(其中“globs”是您要包含或排除的URL的片段)。所以:

"include_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" } ], ,因此在DOM完成后立即注入文件,但在加载图像和帧之类的子资源之前(根​​据上面的链接)。希望这有助于某人!

© www.soinside.com 2019 - 2024. All rights reserved.