0

我正在开发一个用于 Canvas LMS 的 Chrome 扩展程序。这样做的一个问题是 Canvas 订阅者有不同的 URL,这些 URL 没有共同的顶级域。例如,我大学的 Canvas 网站有 URL canvas.gu.se,而另一所学校可能有canvas.myschool.edu. 但我无法输入文件,因为不允许"matches":"https://canvas.*/*"使用 manifest.json顶级通配符(请参阅这篇文章进行详细说明)。相反,我必须输入"matches":"https://*/*",然后以编程方式(在content.js代码中)清除其中没有“画布”的站点。

这以它自己的笨拙方式运作,但 Chrome 网上应用店对此并不满意,这导致我的更新延迟了几天。

当然可以使用一个窄/虚拟matches值,然后要求用户自己编辑清单以包括在每种情况下使用的特定 URL,但他们这样做的可能性有多大?相反,我希望扩展程序启动一个本地页面,提示用户输入特定的 URL,然后相应地编辑该manifest.json特定机器上的文件。那有可能吗?如果可以,怎么做?

4

1 回答 1

1

无法修改从网上商店安装的扩展程序,其内容受 Chrome 保护和验证。只能修改开发者模式下解压的本地扩展。

解决方案:

  1. 添加"include_globs": ["*://canvas.*/*"]信息)除了你的"matches"
    这很可能不会帮助您减少在网上商店中的审查时间。

  2. 从chrome.tabs.onUpdated ( info ) 侦听器中删除"content_scripts"部分以及主机"permissions"并切换到程序注入。

    这需要您切换到可选权限(您将在 UI 中显示一个按钮/命令以授予 URL 权限),这将帮助您缩短网上商店的审核时间。

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

于 2019-11-20T11:26:24.927 回答