javascript - 如何在 Firefox 插件中使用来自外部 URL 的内容脚本文件

标签 javascript jquery jquery-ui firefox firefox-addon

我对 Firefox 插件的最新更新已被拒绝,因为我使用了自定义的 jquery-ui(由他们的网站生成,其中包含我想要的小部件)并且未通过校验和检查。

Your add-on includes a JavaScript library file that doesn't match our checksums for known release versions. We require all add-ons to use unmodified release versions, obtained directly from the developer's website. We accept JQuery/JQuery-UI libraries downloaded from 'ajax.googleapis.com', 'jquery.com' or 'jqueryui.com'; and used without any modification. (file-name change does not matter) I'm sorry, but we cannot accept modified, re-configured or customized libraries.

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

如果我尝试这样做:

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

我在运行时收到一条错误消息,告诉我内容脚本大部分是本地的。谷歌和the API似乎对我来说是幻觉的答案。

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

干杯

丰富

最佳答案

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

你好像没读过the documentationdata.url()

明确指出

The data.url() method returns a resource:// url that points at an embedded data file.

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


Does anyone know if this is possible and how?

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

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

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


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

关于javascript - 如何在 Firefox 插件中使用来自外部 URL 的内容脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28626395/

相关文章:

javascript - 弹出 :hover cannot be dismissed with blur()

javascript - 类型错误 : _this2 is undefined REACTJS

javascript - Javascript/jQuery/etc 中测量耗时/触发事件的方法

php - 选择菜单不显示正确的选项

具有非线性/指数/对数步长的 JQuery UI slider

javascript - 使可拖动元素响应页面

javascript - 获取嵌套 JavaScript 对象的长度

javascript - 列中的数据跑出页面,如何包含/包装它

javascript - 将 Kendo 网格绑定(bind)到复杂数据源

javascript - if 语句中的 jQuery UI 对话框按钮