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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chrome扩展程序适用于比应有的更多网址相关的知识,希望对你有一定的参考价值。

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

答案

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/”开头的网址

另一答案

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

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

以上是关于Chrome扩展程序适用于比应有的更多网址的主要内容,如果未能解决你的问题,请参考以下文章

如何查看chrome扩展的源代码

Chrome扩展程序:使用特定规则重定向当前网址

Chrome扩展程序浏览器操作仅适用一次

检测活动标签是Chrome扩展程序中的新标签

markdown 适用于后端和前端开发人员的最受欢迎的Google Chrome扩展程序。

iOS 共享扩展在 Chrome 中不起作用