如果在Firefox的manifest.json中指定了内容脚本,Firefox还将为已打开的选项卡加载内容脚本并执行它们,即使选项卡已处于已加载和就绪状态.
为已打开的标签安装扩展程序时,Google Chrome不会添加任何内容脚本.为旧版标签刷新页面时会加载内容脚本.
我想问的是Firefox的行为是预期的还是bug?
firefox google-chrome google-chrome-extension firefox-addon-webextensions
我正在将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
我正在制作Firefox WebExtension插件.这是应该发生的事情:
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
致力于将旧的Firefox扩展迁移到最新的Webextension格式.之前,我能够通过以下方式获取活动选项卡的URL:
var URL = tabs.activeTab.url;
Run Code Online (Sandbox Code Playgroud)
现在,它不起作用.我看到了tabs.getCurrent()和tabs.Tab - > url的一些引用,但没有找到关于如何使用它的单个示例.那么我如何获取活动Firefox选项卡的URL并将其放入变量以供进一步使用?
谢谢,浣熊
我已经为 Firefox 开发了一个 WebExtension,我的网站以该扩展程序为先决条件。我需要以编程方式检查扩展是否安装,如果没有要求用户安装它。
我无法找到如何检查我的扩展程序是否已安装在用户浏览器中的操作。
编者注:Firefox 中可用的方法与Chrome 中可用的方法不同,因此此问题不重复。
javascript mozilla google-chrome-extension firefox-addon-webextensions
我正在创建一个网络扩展来帮助检测网站中的 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)
我无法将此代码注入页面:
如何从我的扩展程序全局覆盖 window.addEventListener?或者,是否有另一种方法来检测事件上的事件侦听器message
?
javascript overriding google-chrome-extension firefox-addon-webextensions
我想知道是否可以使用 WebAssembly 为 Firefox 开发附加组件。
我怀疑是否有可能完全在 WASM 中完成,但是具有最少 JavaScript 包装器的 WASM 核心呢?
Firefox 的扩展(“附加组件”)调试器在几个版本之前进行了更改,但它对我来说根本不起作用;它没有找到我的扩展程序的来源。
按照https://extensionworkshop.com/documentation/develop/debugging上的说明,我转到 about:debugging 页面,加载“临时附加组件”,然后按“检查”按钮。到达那里后,我什么也没看到,还有“此页面没有来源”的有用消息。
扩展本身(这是 Mozilla 提供的超级简单的示例,只需在任何页面周围放置彩色边框)就可以正常工作。
那么为什么调试器看不到它呢?
我确实在 stackoverflow 上看到了有关“无来源”的其他问题,但它们是在 Firefox 版本 69 之前发布的(新的调试界面出现时),并且它们并没有真正阐明这个问题。
我在 Linux 上运行 Firefox 70.0.0.1,FWIW。
当站点收到高流量时,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
我正在尝试将我的 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
firefox-addon-webextensions ×10
javascript ×6
firefox ×4
mozilla ×2
overriding ×1
tabs ×1
vue.js ×1
webassembly ×1