Chrome 扩展程序适用于比应有的更多网址
Chrome Extension applying to more URLs than it should be
所以,我正在尝试做一个扩展,它只适用于它的 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。
所有这些都在后台运行.js。
从文档中不是很清楚,但是(无论是错误还是功能)可以在清单的 permissions
属性中声明的主机匹配模式并不关心路径:
"[scheme]:[host]/*"
它仅适用于scheme
和host
,并将忽略path
部分。
由于您似乎是按语法方式注入的,因此您可以手动根据路径进行过滤:
/* 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/"权限,这同样可以很好地工作,但包括它更有效,因为它减少了后台页面必须检查(和拒绝)的URL数量。 即它只需要检查以"http://www.google.com/"开头的 URL。
这是一个古老的问题,但经过长时间的狩猎,这对我有帮助......(╭ರ_•́)
您可以在清单文件"content_scripts"
添加文件,并使用其 "matches"
属性,就像编写 "permissions"
URL 一样。然后使用内容脚本的 "exclude_matches"
、 "exclude_globs"
和 "include_globs"
属性(其中"globs"是要包含或排除的 URL 片段)优化内容脚本匹配项。所以:
"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 完成后立即注入,但在加载图像和帧等子资源之前(如上面的链接)。希望这对某人有所帮助!
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- Google Chrome扩展程序可以检测所有脚本何时加载完成吗
- jQuery$.ajax扩展程序XDomainRequest
- 为什么不'我的扩展程序不会出现在Chrome网上商店的搜索结果中
- Chrome扩展程序将所有链接替换为略微修改的版本
- 在 Chrome 扩展程序中创建自定义事件的最惯用方式
- Chrome APP/扩展程序从网址下载文件
- 列出谷歌浏览器中安装的所有扩展程序
- 使用多功能框在 chrome 扩展程序中包含内联自动填充功能的任何方法
- 浏览器扩展程序来跟踪我的谷歌活动
- Chrome 扩展程序在后台与页面(不在标签页中)交互
- 无法获取标签页网址 - Chrome 扩展程序
- 谷歌浏览器扩展程序画布图标
- Chrome 扩展程序复制和粘贴
- 在新标签页打开时触发 Chrome 扩展程序
- 为什么我的谷歌浏览器扩展程序在谷歌浏览器版本 41.0.2272.89 中不起作用
- 在Chrome扩展程序中,是否可以截屏并在弹出窗口中显示屏幕
- 如何从 Chrome 扩展程序中的内容脚本中获取变量
- 尝试从我的 chrome 扩展程序访问 gmail 中的 iframe 时出现未定义的错误,但不是从开发者控制台访问
- 在 Chrome 扩展程序中通过发布请求发送网址加载