让用户修改 Chrome 扩展的 manifest.json 内容的编程方法
Programmatic method to let the user modify the manifest.json content of a Chrome extension
我正在开发与 Canvas LMS 一起使用的 Chrome 扩展。一个问题是 Canvas 订阅者有不同的 URL,它们没有共同的顶级域。例如,我大学的 Canvas 站点有 URL canvas.gu.se
,而另一所学校可能有 canvas.myschool.edu
。但是我无法在 manifest.json
文件中输入 "matches":"https://canvas.*/*"
,因为不允许使用顶级通配符(详见 this post)。相反,我必须输入 "matches":"https://*/*"
,然后以编程方式(在 content.js
代码中)清除其中没有 "canvas" 的网站。
它以其自身的笨拙方式运作,但 Chrome 网上应用店对此并不满意,这使我的更新延迟了几天。
当然可以使用 narrow/dummy matches
值,然后要求用户自己编辑清单以包含在每种情况下使用的特定 URL,但是如何他们可能会那样做吗?相反,我希望扩展程序启动一个本地页面,提示用户输入特定的 URL,然后相应地编辑该特定机器上的 manifest.json
文件。这可能吗?如果可能,怎么做?
无法修改从网上商店安装的扩展,其内容受 Chrome 保护和验证。只能修改开发者模式下解压的本地扩展。
解决方案:
添加 "include_globs": ["*://canvas.*/*"]
(info) 除了您的 "matches"
.
这很可能不会帮助您减少网上商店的审核时间。
删除 "content_scripts"
部分,以及 "permissions"
中的主机并切换到 programmatic injection in a chrome.tabs.onUpdated (info) 侦听器。
这需要您切换到 optional permissions(您将在 UI 中显示 button/command 以授予 URL 权限)这将帮助您网店评论次数。
甚至还有更高级的 declarativeContent API(带有 RequestContentScript 操作,实际上在稳定 Chrome 中受支持)。
我正在开发与 Canvas LMS 一起使用的 Chrome 扩展。一个问题是 Canvas 订阅者有不同的 URL,它们没有共同的顶级域。例如,我大学的 Canvas 站点有 URL canvas.gu.se
,而另一所学校可能有 canvas.myschool.edu
。但是我无法在 manifest.json
文件中输入 "matches":"https://canvas.*/*"
,因为不允许使用顶级通配符(详见 this post)。相反,我必须输入 "matches":"https://*/*"
,然后以编程方式(在 content.js
代码中)清除其中没有 "canvas" 的网站。
它以其自身的笨拙方式运作,但 Chrome 网上应用店对此并不满意,这使我的更新延迟了几天。
当然可以使用 narrow/dummy matches
值,然后要求用户自己编辑清单以包含在每种情况下使用的特定 URL,但是如何他们可能会那样做吗?相反,我希望扩展程序启动一个本地页面,提示用户输入特定的 URL,然后相应地编辑该特定机器上的 manifest.json
文件。这可能吗?如果可能,怎么做?
无法修改从网上商店安装的扩展,其内容受 Chrome 保护和验证。只能修改开发者模式下解压的本地扩展。
解决方案:
添加
"include_globs": ["*://canvas.*/*"]
(info) 除了您的"matches"
.
这很可能不会帮助您减少网上商店的审核时间。删除
"content_scripts"
部分,以及"permissions"
中的主机并切换到 programmatic injection in a chrome.tabs.onUpdated (info) 侦听器。这需要您切换到 optional permissions(您将在 UI 中显示 button/command 以授予 URL 权限)这将帮助您网店评论次数。
甚至还有更高级的 declarativeContent API(带有 RequestContentScript 操作,实际上在稳定 Chrome 中受支持)。