如何在Firefox插件中使用来自外部URI的contentScriptFile



我对Firefox插件的最新更新被拒绝了,因为我使用了一个自定义jquery ui(由他们的网站生成,只包含我想要的小部件),但它没有通过他们的校验和检查。

您的插件包含一个JavaScript库文件,该文件与我们的已知发布版本的校验和。我们要求使用所有附加组件未修改的发布版本,直接从开发人员的网站我们接受从下载的JQuery/JQuery UI库"ajax.googleapis.com"、"jquery.com"或"jqueryui.com";并使用没有任何修改。(文件名更改无关紧要)我抱歉,我们不能接受修改、重新配置或自定义图书馆。

公平地说,我可以下载完整的并重新提交,但我想知道是否可以链接到一个?

如果我尝试这个:

contentScriptFile: [self.data.url("https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"), self.data.url("https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"), self.data.url("api.js")],

我在运行时遇到一个错误,告诉我内容脚本大多是本地的。对于我来说,谷歌和API似乎都是虚幻的。

有人知道这是否可能以及如何实现吗?

干杯

self.data.url("https://...")

你似乎还没有阅读data.url() 的文档

它明确指出

方法返回一个指向嵌入数据文件的resource://url。

这意味着您无法链接到外部资源。


有人知道这是否可能以及如何实现吗?

不,与常规web内容相比,contentScriptFile运行时的权限(略有)提高,这就是为什么不允许从可能更改的源加载脚本的原因,理论上这些源将来可能会注入恶意代码。

如果你想依赖外部库并使它们保持最新,你可以简单地编写一个小的构建脚本,在构建新的XPI时总是下载最新版本。

原则上,您可以通过特权XHR加载脚本,然后将其作为字符串传递,但这可能不会通过AMO审查。


个人观点:由于你针对的是特定的浏览器,你并不真正需要jquery来实现其跨浏览器逻辑,现代web API提供了许多方便的方法,只需使用普通的ES6 javascript和最先进的DOM API就可以实现这些方法。迭代程序和箭头函数也使批量操作相当简洁。

最新更新