我正在开发与Canvas LMS一起使用的Chrome扩展程序。这样做的问题是Canvas订户具有不同的URL,这些URL没有公共的顶级域。例如,我的大学的Canvas网站的URL为canvas.gu.se
,而另一所学校的URL为canvas.myschool.edu
。但是我无法在"matches":"https://canvas.*/*"
文件中输入manifest.json
,因为不允许使用顶级通配符(详细说明请参见this post)。相反,我必须输入"matches":"https://*/*"
,然后以编程方式(在content.js
代码中)清除其中没有“画布”的网站。
这可以以自己的方式行事,但Chrome Web Store对此并不满意,这使我的更新延迟了几天。
当然可以使用一个狭窄/虚拟的matches
值,然后让用户自己编辑清单以包括在每种情况下使用的特定URL,但是他们这样做的可能性有多大?相反,我希望扩展程序启动一个本地页面,该页面提示用户输入特定的URL,然后相应地在该特定计算机上编辑manifest.json
文件。可能吗?如果可以,怎么办?
答案 0 :(得分:1)
无法修改网上商店中已安装的扩展程序,其内容受Chrome保护和验证。只有在开发人员模式下解压缩的本地扩展才可以修改。
解决方案:
在您的"include_globs": ["*://canvas.*/*"]
之外添加"matches"
(info)。
这很可能不会帮助您减少在网络商店中的审阅时间。
从"content_scripts"
中删除"permissions"
部分以及主机,并在chrome.tabs.onUpdated(programmatic injection)侦听器中切换到info。
这需要您切换到optional permissions(您将在UI中显示一个按钮/命令来授予URL权限),这将帮助您确定网络商店的审核时间。
甚至还有更高级的declarativeContent API(具有RequestContentScript操作,在稳定的Chrome中实际上受支持)。