Chrome扩展提交审核时content_scripts的matches字段可否留空?
结论
manifest.json中content_scripts的matches数组留空既不符合Chrome扩展开发规范,也无法正常运行,完全不可行。
原因说明
- content_scripts字段的核心作用就是声明要注入脚本的站点范围,matches是必填配置项,留空时浏览器没有可匹配的注入目标,因此本地测试会直接报错,即使躲过审核警告,发布后也不会生效。
- 你当前的场景不需要预声明注入规则,完全不需要保留content_scripts配置,用你已申请的
activeTab权限配合编程式脚本注入即可实现需求,同时还能避免审核警告。
具体改造方案
- 直接删除manifest.json中整个
content_scripts配置段,不需要保留空的matches数组。 - 在需要注入脚本的逻辑处(比如用户点击扩展图标后),调用
chrome.tabs.executeScriptAPI动态注入脚本即可。activeTab权限已经授权你在用户点击扩展后,向当前激活的标签页注入脚本,不需要提前声明站点匹配规则。
示例代码(可放在popup对应的js逻辑中):
// 向当前激活标签页注入content.js chrome.tabs.query({active: true, currentWindow: true}, ([activeTab]) => { chrome.tabs.executeScript(activeTab.id, { file: 'content.js' }, () => { // 注入完成后的后续逻辑 }) })
改造后的manifest参考:
{ "name": "DraftToCalendar", "description": "blah blah", "version": "0.1.0", "manifest_version": 2, "key": "bigKey", "oauth2": { "client_id": "bigGoogleKey", "scopes": [ "https://www.googleapis.com/auth/calendar" ] }, "icons": { "16": "./calendar-icon.png", "48": "./calendar-icon.png", "128": "./calendar-icon.png" }, "browser_action": { "default_title": "DraftToCalendar", "default_popup": "./index.html" }, "permissions": [ "identity", "activeTab" ] }
这种方案完全符合Chrome扩展的权限最小化要求,不会触发审核警告,也能满足你不需要固定匹配站点的需求。
内容的提问来源于stack exchange,提问作者David George
相关产品推荐
相关产品推荐

