问题标签 [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.
javascript - 如何在 Webextensions 中加载资源之前根据其内容阻止资源?
我想在资源完全加载之前阻止资源(如 JavaScript 或 CSS 文件)。如果资源被阻止,条件取决于它们的内容。实际上,这样做没有解决方案,或者?
我所知道的:Webextensions 类似于 Chrome 扩展,所以它们也有 webRequest.onBeforeRequest 监听器。侦听器允许阻止文件:
到此为止,一切都很好。还应该有 requestBody 选项,所以我可以根据文件的内容做出决定。但Mozilla Doc说:
- Firefox 不支持“requestBody”选项。
哦,糟糕的故事,不酷。所以我需要一个异步 XHR 请求来获取 URL 数据:
=> 这不起作用。返回{取消:X};接受普通函数,例如return {cancel: doSth()}; ,但没有异步回调。我没有将结果“返回”到取消 JSON 的选项。
在其他 stackoverflow 问题中,我读到了nsIContentPolicy,它是
XPCOM 的一部分。我没有找到提示、示例或描述,我如何在 Firefox Webextension 环境中使用它。这可能吗?如果是,如何?
如果这两件事都不可能,我怎么能做这样的扩展?我必须在没有 Webextension 的情况下使用已弃用的 XPCOM 吗?
firefox - Firefox 扩展:无法解析用于扩展存储的 JSON 数据
我使用 Web 扩展 API 编写了一个 Firefox 扩展。它已通过初步审查,但审查者说他在安装时无法继续进行完整审查,他收到以下错误 -
“无法解析 JSON 数据以进行扩展存储”
经过一段时间的检查,我发现 Firefox 在配置文件文件夹中为它写入和读取的每个扩展创建了一个名为“storage.js”的文件,该文件包含该特定扩展的所有本地存储数据。如果扩展在创建此文件之前尝试写入此文件,则会引发错误“无法将 JSON 数据写入扩展存储”,并且如果扩展代码在创建此文件之前尝试从该文件中读取,则会出现错误“无法解析用于扩展存储的 JSON 数据”。
现在,我关心的是如何确定文件已创建并且可以写入或读取?
PS:刚安装扩展程序时会发生这种情况。对于后续会话,此错误不会出现,因为该文件不再丢失。
firefox - Firefox web-extension api captureVisibleTab refturns undefined
我一直在尝试使用 Web 扩展 API 创建一个 Firefox 插件。我的插件应该截取用户正在使用 chrome.tabs.captureVisibleTab 浏览的当前页面的屏幕截图,但它返回未定义。他们说它已经在http://arewewebextensionsyet.com/上的 API 中实现了,但我似乎无法让它工作。
这是我的代码:
我也尝试过传入一个 window.id 作为第一个参数,即使在文档中它说它是可选的,但这也会返回一个未定义的数据值。
有没有人特别有这方面的经验?
firefox - Firefox WebExtension 通知 API:单击通知时如何调用函数
我正在尝试使用 WebExtensions 开发 Firefox 插件。我要做的是在用户单击通知时打开一个新的 Firefox 选项卡或窗口。但它不起作用。
当我单击通知时,没有任何反应。
我正在创建通知,例如:
我怎样才能使这项工作?
firefox-addon - 如何在 Firefox Webextensions 中执行命令行程序?
我想在一个简单的 WebExtensions 插件中运行一个带有参数的命令(磁盘上某处的 exe),并可能得到它的标准输出。有没有办法在 WebExtensions 中这样做,因为旧的 API 已被弃用?
iframe - 使用 WebExtensions 隐藏 iframe Firefox 插件
我需要使用 WebExtensions 在 Firefox 插件中创建一个隐藏的 iframe。
这就是我正在尝试做的事情(如此处所建议: Load multiple pages in a hidden iframe from a xul-based firefox extension):
我收到错误“Components.classes 未定义”,似乎无法解决。
帮助表示赞赏。谢谢你。
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 中需要相同的行为
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不起作用。
css - 如何在 Firefox WebExtension 上使用 @font-face
我正在尝试使用WebExtensions API移植 Chrome 扩展 Firefox 插件。在我正在使用的 chrome 扩展中
包括字体。我应该在 Firefox WebExtension 中使用什么?
由于我不能在 CSS 文件中使用 browser.extension.getURL(),如何将 @font-face 与本地字体文件一起使用?
javascript - 来自 Firefox WebExtension 的 XMLHttpRequest
我已经看到了大量从 Firefox 附加组件创建 xhr 请求的示例,但我正在尝试使用新的WebExtensions东西(其中require
和Components
未定义)并且似乎不明白为什么我不能发送一个简单的 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 请求?有任何想法吗?