Javascript 允许用户修改Chrome扩展的manifest.json内容的编程方法

Javascript 允许用户修改Chrome扩展的manifest.json内容的编程方法,javascript,google-chrome-extension,manifest.json,canvas-lms,Javascript,Google Chrome Extension,Manifest.json,Canvas Lms,我正在开发一个用于Canvas LMS的Chrome扩展。这样做的一个问题是,Canvas订阅服务器具有不同的URL,而这些URL没有公共的顶级域。例如,我所在大学的Canvas网站有URLCanvas.gu.se,而另一所学校可能有Canvas.myschool.edu。但我无法输入“匹配项”:https://canvas.*/*“在manifest.json文件中,因为不允许使用顶级通配符(请参阅详细说明)。相反,我必须输入“匹配项”:“https://*/*”,然后以编程方式(在conte

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

这是一种很难实现的方式,但Chrome网络商店对此并不满意,这使得我的更新延迟了好几天


当然,可以使用窄/伪
matches
值,然后要求用户自己编辑清单,以包含在每个案例中使用的特定URL,但他们这样做的可能性有多大?相反,我希望扩展启动一个本地页面,提示用户输入特定的URL,然后相应地编辑特定机器上的
manifest.json
文件。这可能吗?如果可能,如何实现?

无法修改web应用商店中已安装的扩展,其内容受Chrome保护和验证。只能修改开发人员模式下未打包的本地扩展

解决方案:

  • 除了您的
    “匹配项”

    很可能,这不会帮助您减少网上商店的审查时间

  • “权限”
    中删除
    “内容\u脚本”
    部分以及主机,并切换到chrome.tabs.onUpdated()侦听器中

    这要求您切换到(您将在UI中显示一个按钮/命令以授予URL权限),这将帮助您查看web应用商店的时间

    甚至还有一个更高级的API(带有RequestContentScript操作,这在稳定的Chrome中实际上是受支持的)


  • 我认为这是不可能的;不是100%确定,但似乎不太可能像那样更改源代码。不确定它是否会加速您的应用程序,但您不能执行
    “https://canvas.*/*“
    作为您的匹配项?@James:Chrome扩展不能有类似的
    匹配值。我确实试过了,得到了一条错误消息,然后在这里发现它是被禁止的:啊,对了,对不起,我想使用include_globs并不能加快速度,因为您仍然必须指定匹配所有内容?我有种感觉,你可能不得不忍受等待,或者找到解决办法。更新的延迟有那么大的影响吗/你真的经常更新吗?也许你可以从API或其他什么东西获取数据,而不是上传更新?@James:我也使用
    include\u globs
    。当尘埃落定,扩展更加成熟时,这种延迟可能不会成为问题,因为不需要经常更新。但我也对目前的解决方案缺乏优雅感到有点恼火:)好吧。。让我们看看这里。在alt 2中,我应该在
    background.js
    脚本中输入用于编程注入的代码。但是这个脚本是为了回应来自。。。一些请求可选权限的脚本,我们称之为
    request.js
    。既然我现在已经删除了整个
    content\u scripts
    部分,那么这个
    request.js
    脚本是如何在清单中声明的,以便扩展能够识别它的?您将在UI中显示一个按钮/命令来授予URL或API权限。对不起,我太笨了。我的UI在哪里?我们是在谈论选项页吗?如果没有,如何/在何处创建UI?它可以是选项页或浏览器操作页,也可以只是图标上的上下文菜单,请参阅。我已尝试实施此解决方案,但遇到了一些问题,在另一篇后续文章中详细介绍。