标签: firefox-addon-webextensions

安装时用于Firefox Web扩展的内容脚本注入

如果在Firefox的manifest.json中指定了内容脚本,Firefox还将为已打开的选项卡加载内容脚本并执行它们,即使选项卡已处于已加载和就绪状态.

为已打开的标签安装扩展程序时,Google Chrome不会添加任何内容脚本.为旧版标签刷新页面时会加载内容脚本.

我想问的是Firefox的行为是预期的还是bug?

firefox google-chrome google-chrome-extension firefox-addon-webextensions

7
推荐指数
1
解决办法
432
查看次数

是否有一个相当于chrome.declarativeContent.onPageChanged的FF?

我正在将Chrome扩展程序移植到Firefox WebExtensions,我一直在寻找解决方法chrome.declarativeContent.onPageChanged.

我的FF Webextension包含在某些网站上导航时必须显示的页面操作.但是,可用API中的所有侦听器似乎都不允许这样做.

特别是我试过:

chrome.runtime.onInstalled.addListener(onChange);
chrome.tabs.onCreated.addListener(onChange);
chrome.tabs.onActivated.addListener(onChange);
chrome.tabs.onUpdated.addListener(onChange);
chrome.webNavigation.onDOMContentLoaded(onChange);
chrome.webNavigation.onCreatedNavigationTarget(onChange);
Run Code Online (Sandbox Code Playgroud)

有没有已知的解决方法?

javascript google-chrome-extension firefox-addon-webextensions

7
推荐指数
1
解决办法
876
查看次数

Firefox WebExtension:生成XMLHttpRequest

我正在制作Firefox WebExtension插件.这是应该发生的事情:

  1. 用户单击任何页面上的浏览器图标.
  2. 执行JavaScript,从页面收集信息.
  3. 信息将使用发送到我的服务器 XMLHttpRequest

这是我的Chrome扩展程序的功能.但是,我无法使用Firefox附加组件.JavaScript被注入并执行,因为我确实看到了alert()我在脚本末尾放置的内容.但是,没有调用我的服务器.Firefox调试器没有显示网络活动,也没有显示任何错误.

表现:

{
  "manifest_version": 2,
  "name": "my_name",
  "version": "1.0",
  "description": "My description",
  "icons": {
    "48": "icons/my_icon.png"
  },
  "permissions": [
    "activeTab"
  ],
  "browser_action": {
    "default_icon": "icons/some_icon.png",
    "default_title": "My Name"
  },
  "background": {
    "scripts": ["background.js"]
  }
}
Run Code Online (Sandbox Code Playgroud)

background.js:

browser.browserAction.onClicked.addListener(function(tab) {
    browser.tabs.executeScript(null, {file:"content_script.js"}); 
});
Run Code Online (Sandbox Code Playgroud)

content_script.js:

var xmlHttp=new XMLHttpRequest();
xmlHttp.open("POST", "https://www.my_site.org",true);
var formData = new FormData();  
formData.append("my_var", "my_var");
xmlHttp.send(formData); 
alert("I do get here!");
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest firefox-addon firefox-addon-webextensions

7
推荐指数
1
解决办法
977
查看次数

Firefox WebExtension API:如何获取活动选项卡的URL?

致力于将旧的Firefox扩展迁移到最新的Webextension格式.之前,我能够通过以下方式获取活动选项卡的URL:

var URL = tabs.activeTab.url;
Run Code Online (Sandbox Code Playgroud)

现在,它不起作用.我看到了tabs.getCurrent()和tabs.Tab - > url的一些引用,但没有找到关于如何使用它的单个示例.那么我如何获取活动Firefox选项卡的URL并将其放入变量以供进一步使用?

谢谢,浣熊

javascript firefox tabs firefox-addon-webextensions

7
推荐指数
1
解决办法
4335
查看次数

如何使用页面 JavaScript 检查是否安装了 Firefox WebExtension?

我已经为 Firefox 开发了一个 WebExtension,我的网站以该扩展程序为先决条件。我需要以编程方式检查扩展是否安装,如果没有要求用户安装它。

我无法找到如何检查我的扩展程序是否已安装在用户浏览器中的操作。

编者注:Firefox 中可用的方法与Chrome 中可用的方法不同,因此此问题不重复。

javascript mozilla google-chrome-extension firefox-addon-webextensions

6
推荐指数
1
解决办法
2710
查看次数

从浏览器扩展覆盖 JavaScript 函数

我正在创建一个网络扩展来帮助检测网站中的 postMessage 活动。因此,我想在页面附加message事件侦听器时检测它,例如通过调用此代码:

window.addEventListener("message", ...)
Run Code Online (Sandbox Code Playgroud)

显然,不可能获得事件侦听器的列表。我的下一个想法是覆盖addEventListener,这样我就可以检测到对它的调用:

window.addEventListener = function(type) {
    if (type == "message") {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

我无法将此代码注入页面:

  • 内容脚本可以访问每个页面的 DOM,但不能访问 window 对象。更改内容页面上的 window.addEventListener 对实际页面没有影响。
  • 我可以通过修改 DOM 来添加脚本元素,但我无法正确把握时机。我的脚本需要在任何其他脚本之前运行,并且此方法仅在已有 DOM 时才有效。
  • chrome.tabs.executeScript 之类的函数在特定选项卡上工作,我想在每个页面上运行代码。如果页面有 iframe,这会有所不同,我还想覆盖 addEventListener。

如何从我的扩展程序全局覆盖 window.addEventListener?或者,是否有另一种方法来检测事件上的事件侦听器message

javascript overriding google-chrome-extension firefox-addon-webextensions

6
推荐指数
1
解决办法
2544
查看次数

是否可以在 WebAssembly 中编写 WebExtension?

我想知道是否可以使用 WebAssembly 为 Firefox 开发附加组件。

我怀疑是否有可能完全在 WASM 中完成,但是具有最少 JavaScript 包装器的 WASM 核心呢?

firefox webassembly firefox-addon-webextensions

6
推荐指数
1
解决办法
682
查看次数

Firefox 扩展调试器显示“此页面没有来源”

Firefox 的扩展(“附加组件”)调试器在几个版本之前进行了更改,但它对我来说根本不起作用;它没有找到我的扩展程序的来源。

按照https://extensionworkshop.com/documentation/develop/debugging上的说明,我转到 about:debugging 页面,加载“临时附加组件”,然后按“检查”按钮。到达那里后,我什么也没看到,还有“此页面没有来源”的有用消息。

扩展本身(这是 Mozilla 提供的超级简单的示例,只需在任何页面周围放置彩色边框)就可以正常工作。
那么为什么调试器看不到它呢?

我确实在 stackoverflow 上看到了有关“无来源”的其他问题,但它们是在 Firefox 版本 69 之前发布的(新的调试界面出现时),并且它们并没有真正阐明这个问题。

我在 Linux 上运行 Firefox 70.0.0.1,FWIW。

firefox-addon firefox-addon-webextensions

6
推荐指数
1
解决办法
652
查看次数

延长在 Mozilla Firefox 中显示“PR_CONNECT_RESET_ERROR”错误的持续时间?

当站点收到高流量时,Mozilla Firefox 中的选项卡会停止加载并显示此错误消息“ PR_CONNECT_RESET_ERROR”,如屏幕截图所示。

连接重置错误

我想要的是,该选项卡应该持续加载,直到它收到来自站点服务器的响应而不显示此错误,或者我想增加它在默认情况下一直尝试连接到该站点服务器的持续时间(时间或数量)。

我不知道是否可行,但我尝试的是,我从about:config. 我network.http.keep-alive.timeout从 120 增加到 215,network.http.max-persistent-connections-per-server从 6 增加到 20。但我没有发现任何明显的变化。

是否有更好的可能性来实现我的期望?

注意:我从具有不同会话的不同选项卡向相同的 url(www.example.com) 发出大约 30-40 个请求。

firefox mozilla firefox-developer-tools firefox-addon-webextensions

6
推荐指数
0
解决办法
857
查看次数

未捕获的类型错误:无法读取未定义的属性(读取“onClicked”)

我正在尝试将我的 chrome 纯 JS 扩展迁移到 vuejs 版本。我所有的 pureJS 版本都工作正常。

但是使用 vuejs 我在加载扩展时出现无法理解的错误。

这是我的 manifest.json 和 vue.config.js : Manifest :

{
  "manifest_version": 2,
  "name": "__MSG_appName__",
  "version": "2.1.0",
  "homepage_url": "https://*****.*********/",
  "description": "****** Vuejs",
  "default_locale": "fr",
  "permissions": [
    "activeTab",
    "<all_urls>",
    "*://*/*",
    "storage"
  ],
  "icons": {
    "48": "icons/icon-48.png",
    "64": "icons/icon-64.png",
    "128": "icons/icon-128.png"
  },
  "background": {
    "scripts": [
      "js/background.js"
    ],
    "persistent": true
  },
  "browser_action": {
    "default_popup": "popup.html",
    "default_title": "__MSG_appName__",
    "default_icon": {
      "48": "icons/icon-48.png",
      "64": "icons/icon-64.png"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

vue.config.js :

module.exports = {
  pages: { …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension vue.js firefox-addon-webextensions

6
推荐指数
2
解决办法
5万
查看次数