问题标签 [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 投票
2 回答
1540 浏览

javascript - 打开一个选项卡并在 firefox webextension 中向它发出 POST 请求

我尝试将使用低级 SDK API 的 Firefox插件迁移到 WebExtension,并且在某些时候我想将 url 编码的数据发布到新选项卡。

使用低级 API 可以通过以下代码:

但我还没有找到等效的 WebExtension。

是否有可能或唯一的解决方案是创建一个表单并在js中提交?

0 投票
0 回答
718 浏览

javascript - Firefox WebExtension CSP 问题

我正在尝试将 Chrome 扩展程序转换为 Firefox WebExtension。到目前为止它工作得很好,但由于某种原因,我遇到了 GitHub 的问题。我的扩展在页面的一侧添加了一个小 div,但是当我尝试将其添加到 GitHub 时,我得到了错误

内容安全策略:页面的设置阻止了自身资源的加载(“script-src https://assets-cdn.github.com ”)。

我不知道为什么,因为在我的manifest.json我已经将 CSP 设置为

我将不胜感激有关此问题的任何建议。它在 Chrome 上运行良好。

0 投票
1 回答
2405 浏览

firefox-addon - 如何使用新的 WebExtensions api 更改 firefox 首选项(about:config)?

要使用旧 API 更改设置 (about:config),您只需执行以下操作:

对于 Firefox 的新 WebExtensions 附加组件,我找不到任何关于该主题的内容。还不可用吗?

0 投票
2 回答
228 浏览

angularjs - 在 Firefox WebExtension 中使用 AngularJS 时,出现错误“Chrome 未定义”

我正在尝试将我的 Chrome 扩展程序移植到 Firefox WebExtension。在弹出窗口中,当用户单击按钮时,我试图打开新窗口(用于登录)。

我正在调用下面的函数

浏览器工具箱中的错误

错误 :铬未定义

0 投票
1 回答
537 浏览

javascript - 如何检测 Firefox 主题

对于 WebExtension,我们使用browser.browserAction.setIcon来设置图标。正如您在此示例中看到的那样,为了适应,图标应该有深色或浅色背景。

我的 Javascript 代码如何知道哪个主题有效?或者更好的是,我可以确定工具栏的背景颜色是什么,以便制作合适的图标吗?

在此处输入图像描述

0 投票
1 回答
81 浏览

firefox - 签署和提交 Firefox WebExtension

我能够将我的 chrome 扩展(https://chrome.google.com/webstore/detail/clipmystuff/ponkmhjofooonokejbbmladaomkbbgcd)移植到 Firefox EebExtension,在 Firefox(46)中一切正常,但我无法将扩展发布到Mozilla 商店。在附加开发者中心上传我的扩展后,它卡在第 2 步。

第二步:https ://addons.mozilla.org/en-US/developers/addon/submit/2

从过去 4 小时开始,它卡在第 2 步,我还需要为 WebExtension 做些什么吗?

在此处输入图像描述

0 投票
1 回答
206 浏览

firefox - Firefox WebExtension 选项按钮不起作用

我正在更新旧扩展,从旧 XUL 代码传递到 html/css“chrome”代码。

我的 .json 文件中的“options_ui”标签有问题...如果我使用当前的 firefox 版本(46.0.1)加载扩展,我看不到扩展的“选项”按钮(如图所示关于:插件)。

但是,如果我使用当前的开发人员版本(48.0a2)加载它,它会显示并按预期工作。

选项按钮

关于如何解决这个问题的任何建议?必须有一种方法可以在不使用 XUL 代码的情况下显示选项按钮。

这是我的 json 文件中的 options_ui 部分:

"options_ui": { "page": "html/options.htm" },

0 投票
3 回答
2427 浏览

javascript - Firefox 扩展:在文件上调用 executeScript 但不是代码时出错

当该选项卡打开时,我正在尝试在新选项卡中执行脚本。

在我的后台脚本中,我有:

在 contentScript.js 中:

由此我得到以下错误:

如果我只是执行代码而不是调用 js 脚本,例如:

这不会导致错误。知道是什么原因造成的吗?

0 投票
1 回答
101 浏览

firefox-addon - 带有 Firefox 同步 1.1 的 WebExtensions

我正在尝试更新基于 XUL 和 XPCOM 的旧 Firefox 插件并在 WebExtention 中重新实现它。这个新的附加组件将使用firefox 同步服务器 1.1安全地交换一些信息,基于。我不能使用 firefox 同步服务器 1.5,因为它不使用 J-PAKE。我已经能够很好地与服务器交谈,但现在在协议的第二步上绊倒了。

移动/桌面从随机弱密钥(4 个字符 a-z0-9)和频道 ID 生成 PIN,计算并上传 J-PAKE msg 1. v2 的新功能:为了防止重试时重复上传,If-None-匹配: * 标头已指定。这样可以确保仅在通道为空时才上​​传消息。如果不是,则请求将失败,并显示 412 Precondition Failed,这应该被视为与 200 OK 相同。412 还将包含客户端刚刚上传的数据的 Etag。

问题是旧实现使用了 XPCOM 对象:

并允许使用此处描述并此处实现的功能

负责生成:gx1, gv1, r1, gx2, gv2 and r2.

有没有办法在WebExtentions中使用 XPCOM 对象?还是我被迫使用带有XPCOM 低级 API 的Add-on SDK

我曾尝试使用curve25519.js来模拟此处的值,但没有成功。

欢迎任何帮助,谢谢

0 投票
1 回答
2333 浏览

javascript - 如何在 Webextension 中以正确的权限运行跨域 XHR 请求?

目标:我想开发一个 Firefox Webextension(类似于 Chrome 扩展),在加载之前检测 HTML 和 JavaScript 文件。如果这些文件中有特定内容,将被阻止,否则允许通过。

问题:无法收集具有不同域的文件内容,因为它们抛出“跨域”错误,因为缺少 Access-Control-Allow-Origin 标头。

我读了很多关于这个问题的东西,文档说,如果在 Webextension 清单中设置了权限,则不需要 Access-Control-Allow-Origin 标头。这里引用Mozilla Doc

使用权限键为您的扩展请求特殊权限。[...] 密钥可以包含三种权限: [...] 主机权限 [...] 主机权限被指定为匹配模式,每个模式标识一组 URL,扩展程序正在为其请求额外权限. 额外的特权包括:XHR 访问 这些来源[...]

我的清单.json:

在这里,我在权限键中有“*://*/*”,这意味着每个网络资源都应该有权限并且不应该发生跨域错误?还是我错了?谁能告诉我,为什么我会收到错误或如何避免它?

我的背景脚本.js:

我的 contentscript.js:

在 contentscript.js 中,我使用 jQuery $.get方法来访问网站内容。我还尝试了 $.ajax和 dataType jsonp,但在这种情况下,我得到了一个无限的访问链,并且脚本尝试无限次加载资源。我完全不明白,为什么会这样,可能是因为我使用了 chrome.webRequest.onBeforeRequest 监听器,如果出现新的连接就会被访问,在这种情况下它会陷入死循环?

在我阅读的Mozilla Doc中,chrome.webRequest.onBeforeRequest 有一个参数 requestBody:

包含 HTTP 请求正文数据。[...] 1. Firefox 不支持“requestBody”选项。

  1. 这个解决方案将是最好的 => 但它不可用
  2. 我用权限模式尝试了 $.get => 我得到了 Cross-Origin 错误
  3. 我用 jsonp 和相同的权限模式尝试了 $.ajax => 我得到了无限循环

所以问题又来了:我如何访问不同域的文件内容而不会出现跨域错误,其中域名是打开的(模式如“*://*/*”)?