Chrome扩展能否作用于扩展程序标签页?
让Chrome扩展content_scripts匹配chrome://内置页面的方法
常规配置里,我们常用以下方式让content_scripts匹配所有网址:
"content_scripts": { "matches": ["http://*","https://*"] }
或者更简洁的写法:
"content_scripts": { "matches": ["<all_urls>"] }
但这些配置都无法覆盖chrome://extensions、chrome://settings这类Chrome内置页面,哪怕尝试"matches": ["*://extensions/*"]或者"*://*/*"也没用——因为chrome://是Chrome专属的内置协议,不在常规HTTP/HTTPS的匹配范围内。
之前旧的解决方案已经失效,现在可以通过以下步骤解决:
第一步:声明host_permissions权限
必须在manifest.json里明确添加对目标内置页面的权限,比如只需要匹配扩展管理页和设置页的话:"host_permissions": [ "chrome://extensions/*", "chrome://settings/*" ]要是需要覆盖所有内置页面,就写
"chrome://*/*"。第二步:正确配置content_scripts
在content_scripts里指定对应的matches规则,同时加上"all_frames": true(很多内置页面包含子框架,开启这个能确保脚本注入到所有框架中):"content_scripts": [ { "matches": [ "chrome://extensions/*", "chrome://settings/*" ], "js": ["content.js"], "css": ["content.css"], "all_frames": true } ]额外提醒
- 这种权限属于Chrome的特殊权限,要是扩展想上架Chrome商店,可能会被额外审核,本地开发测试不受影响。
- 不同Chrome版本对内置页面的权限控制可能有变化,建议用新版本Chrome测试。
- 别随便申请
chrome://*/*权限,只声明实际需要的页面路径,避免权限过度申请。
内容的提问来源于stack exchange,提问作者ishandutta2007
相关产品推荐
相关产品推荐

