问题标签 [firefox-addon-webextensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
280 浏览

javascript - 如何在 Webextensions 中加载资源之前根据其内容阻止资源?

我想在资源完全加载之前阻止资源(如 JavaScript 或 CSS 文件)。如果资源被阻止,条件取决于它们的内容。实际上,这样做没有解决方案,或者?

我所知道的:Webextensions 类似于 Chrome 扩展,所以它们也有 webRequest.onBeforeRequest 监听器。侦听器允许阻止文件:

到此为止,一切都很好。还应该有 requestBody 选项,所以我可以根据文件的内容做出决定。但Mozilla Doc说:

  1. Firefox 不支持“requestBody”选项。

哦,糟糕的故事,不酷。所以我需要一个异步 XHR 请求来获取 URL 数据:

=> 这不起作用。返回{取消:X};接受普通函数,例如return {cancel: doSth()}; ,但没有异步回调。我没有将结果“返回”到取消 JSON 的选项。

在其他 stackoverflow 问题中,我读到了nsIContentPolicy,它是
XPCOM 的一部分。我没有找到提示、示例或描述,我如何在 Firefox Webextension 环境中使用它。这可能吗?如果是,如何?

如果这两件事都不可能,我怎么能做这样的扩展?我必须在没有 Webextension 的情况下使用已弃用的 XPCOM 吗?

0 投票
1 回答
428 浏览

firefox - Firefox 扩展:无法解析用于扩展存储的 JSON 数据

我使用 Web 扩展 API 编写了一个 Firefox 扩展。它已通过初步审查,但审查者说他在安装时无法继续进行完整审查,他收到以下错误 -

“无法解析 JSON 数据以进行扩展存储”

经过一段时间的检查,我发现 Firefox 在配置文件文件夹中为它写入和读取的每个扩展创建了一个名为“storage.js”的文件,该文件包含该特定扩展的所有本地存储数据。如果扩展在创建此文件之前尝试写入此文件,则会引发错误“无法将 JSON 数据写入扩展存储”,并且如果扩展代码在创建此文件之前尝试从该文件中读取,则会出现错误“无法解析用于扩展存储的 JSON 数据”。

现在,我关心的是如何确定文件已创建并且可以写入或读取?

PS:刚安装扩展程序时会发生这种情况。对于后续会话,此错误不会出现,因为该文件不再丢失。

0 投票
1 回答
714 浏览

firefox - Firefox web-extension api captureVisibleTab refturns undefined

我一直在尝试使用 Web 扩展 API 创建一个 Firefox 插件。我的插件应该截取用户正在使用 chrome.tabs.captureVisibleTab 浏览的当前页面的屏幕截图,但它返回未定义。他们说它已经在http://arewewebextensionsyet.com/上的 API 中实现了,但我似乎无法让它工作。

这是我的代码:

我也尝试过传入一个 window.id 作为第一个参数,即使在文档中它说它是可选的,但这也会返回一个未定义的数据值。

有没有人特别有这方面的经验?

0 投票
1 回答
666 浏览

firefox - Firefox WebExtension 通知 API:单击通知时如何调用函数

我正在尝试使用 WebExtensions 开发 Firefox 插件。我要做的是在用户单击通知时打开一个新的 Firefox 选项卡或窗口。但它不起作用。

当我单击通知时,没有任何反应。

我正在创建通知,例如:

我怎样才能使这项工作?

0 投票
1 回答
4162 浏览

firefox-addon - 如何在 Firefox Webextensions 中执行命令行程序?

我想在一个简单的 WebExtensions 插件中运行一个带有参数的命令(磁盘上某处的 exe),并可能得到它的标准输出。有没有办法在 WebExtensions 中这样做,因为旧的 API 已被弃用?

0 投票
1 回答
417 浏览

iframe - 使用 WebExtensions 隐藏 iframe Firefox 插件

我需要使用 WebExtensions 在 Firefox 插件中创建一个隐藏的 iframe。

这就是我正在尝试做的事情(如此处所建议: Load multiple pages in a hidden iframe from a xul-based firefox extension):

我收到错误“Components.classes 未定义”,似乎无法解决。

帮助表示赞赏。谢谢你。

0 投票
2 回答
568 浏览

firefox - 如何确定 Firefox WebExtension 资源的路径以在 chrome.extension.getUrl() 中为不同用户获取相同的值?

在使用我们的扩展程序之前,用户必须登录。我们使用需要一些参数的外部提供程序。重定向网址就是其中之一。当用户登录时,他将被重定向到必须在 xpi 文件中的页面。所以,我们必须确切地知道这个页面的 url 是什么。此 url 必须添加到白名单中,我们必须确保此 url 对于所有用户都是相同的。

我在不同的计算机上安装了 beastify 扩展 ( https://github.com/mdn/webextensions-examples/tree/master/beastify )。单击同一个按钮后,我得到了不同的图像路径: moz-extension://1cb85296-3a66-42f5-85df-5caf7d388c56/beasts/frog.jpg for first 和 moz-extension://2e986e2d-1307-49ee- a4d4-f83e642ecf66/beasts/frog.jpg 第二。

我需要做什么才能在 chrome.extension.getUrl() 中为 Firefox WebExtension 中的不同用户获取相同的值?

UPD:在 manifest.json 中设置“key”后在 Chrome 中是可能的(但这种方式在 Firefox 中不起作用)。然后 chrome.extension.getUrl() , chrome.runtime.id, chrome.extension.id 将为不同的用户/安装/设备返回一个值我在 Firefox 中需要相同的行为

UPD2:https ://bugzilla.mozilla.org/show_bug.cgi?id=1271663

0 投票
1 回答
655 浏览

google-chrome-extension - RequireJS 不在 Firefox WebExtensions 附加组件中加载 JavaScript

我正在尝试使用WebExtensions API将 Chrome 扩展移植到 Firefox 插件。我正在使用RequireJS加载 JavaScript 文件。下面的代码在我的 Chrome 扩展程序中运行良好,但在 Firefox 中运行良好。

有人对此有什么建议吗?谢谢。

清单.json

加载器.js

要求Init.js

csApp.js

编辑:console.log()在 jQuery 内部工作。但是,console.log()内部 csApp.js不起作用。

0 投票
2 回答
1041 浏览

css - 如何在 Firefox WebExtension 上使用 @font-face

我正在尝试使用WebExtensions API移植 Chrome 扩展 Firefox 插件。在我正在使用的 chrome 扩展中

包括字体。我应该在 Firefox WebExtension 中使用什么?

由于我不能在 CSS 文件中使用 browser.extension.getURL(),如何将 @font-face 与本地字体文件一起使用?

0 投票
1 回答
4342 浏览

javascript - 来自 Firefox WebExtension 的 XMLHttpRequest

我已经看到了大量从 Firefox 附加组件创建 xhr 请求的示例,但我正在尝试使用新的WebExtensions东西(其中requireComponents未定义)并且似乎不明白为什么我不能发送一个简单的 XmlHttpRequest 从在扩展内?

值得注意的是,ajax 请求将发送到一个完全不同的 URL,但主机已将 COR 设置为允许所有来源。

一旦.send()被解雇,我就会得到错误:

[异常...“失败”nsresult:“0x80004005(NS_ERROR_FAILURE)”位置:“JS 框架 :: resource://gre/modules/ExtensionContent.jsm -> moz-extension://9ca18411-9a95-4fda-8184- 9dcd3448a41a/myapp.js :: GM_xmlhttpRequest :: 第 162 行"数据:无]"1 whatsapp.js:166:9

代码如下所示:

我在 manifest.json 中添加了 webRequest 权限,我意识到这不是它的意思,但我很难理解是什么阻止了 ajax 请求?有任何想法吗?