【问题标题】:How to use a contentScriptFile from an external URI in a Firefox addon如何在 Firefox 插件中使用来自外部 URI 的 contentScriptFile
【发布时间】:2015-02-20 10:10:58
【问题描述】:

我对 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")],

我在运行时收到一个错误,告诉我内容脚本很可能是本地的。 google 和 the API 似乎对我来说都是虚幻的答案。

有谁知道这是否可行以及如何实现?

干杯

丰富

【问题讨论】:

    标签: javascript jquery jquery-ui firefox firefox-addon


    【解决方案1】:

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

    您似乎没有在data.url()上阅读the documentation

    它明确指出

    data.url() 方法返回指向嵌入数据文件的 resource:// url。

    这意味着您不能链接到外部资源。


    有谁知道这是否可行以及如何实现?

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

    如果您想依赖外部库并使其保持最新状态,您只需编写一个小构建脚本,在构建新 XPI 时始终下载最新版本。

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


    还有一点个人意见:由于您针对的是特定浏览器,因此您实际上并不需要 jquery 来实现其跨浏览器逻辑,现代 Web API 提供了许多方便的方法,您只需使用 vanilla ES6 就可以做到这一点 - javascript 和最先进的 DOM API。迭代器和箭头函数也使批量操作相当简洁。

    【讨论】:

    • 我对“尽量避免使用 jquery,使用 ECMA-6 和现代 DOM”的评论表示赞同,但我再次认识到 jquery != jquery-ui,所以它在这里并不适用。下载远程代码并使用任何方法执行它(eval,将其传递给contentScript会让你被 AMO 拒绝(如果审阅者完成了他们的工作),不需要猜测 ;)
    • 谢谢@the8472,我的问题措辞很差;我知道我不能使用data.url(只是举了一个例子来避免我在这里遇到很多“你试过什么”的反应)。我正在寻找是否有替代方案。我已经从 jquery 下载了允许的脚本,现在一切都很好。就使用 jquery 而言,我目前受到对 jquery-ui 中某些 UI 元素的依赖的限制,因此无法删除它。我正在寻找替代品,所以我可以完全放弃 jquery 依赖项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多