让用户修改Chrome扩展程序的manifest.json内容的编程方法

时间:2019-11-20 10:18:47

标签: javascript google-chrome-extension manifest.json canvas-lms

我正在开发与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文件。可能吗?如果可以,怎么办?

1 个答案:

答案 0 :(得分:1)

无法修改网上商店中已安装的扩展程序,其内容受Chrome保护和验证。只有在开发人员模式下解压缩的本地扩展才可以修改。

解决方案:

  1. 在您的"include_globs": ["*://canvas.*/*"]之外添加"matches"info)。
    这很可能不会帮助您减少在网络商店中的审阅时间。

  2. "content_scripts"中删除"permissions"部分以及主机,并在chrome.tabs.onUpdated(programmatic injection)侦听器中切换到info

  3. >

    这需要您切换到optional permissions(您将在UI中显示一个按钮/命令来授予URL权限),这将帮助您确定网络商店的审核时间。

    甚至还有更高级的declarativeContent API(具有RequestContentScript操作,在稳定的Chrome中实际上受支持)。