Расширение Firefox не работает с почтовыми сообщениями
У меня есть следующий код: background.js
let currentProxy = DEFAULT_PROXY;
let pendingRequests = [];
var ProxyManager =
{
Auth: function(requestDetails)
{
var authData =
{
username: currentProxy.username,
password: currentProxy.password
}
pendingRequests.push(requestDetails.requestId);
return({authCredentials: authData});
},
HandleRequest: function(requestInfo)
{
return currentProxy;
},
Complete: function(requestDetails)
{
var index = pendingRequests.indexOf(requestDetails.requestId);
if (index > -1) pendingRequests.splice(index, 1);
},
Error: function(requestDetails)
{
Complete();
}
}
function MessageHandler(messageObject)
{
if(messageObject.type != 'selenium') return;
messageObject = messageObject.data;
console.log("onmessage:"+messageObject);
switch(messageObject.method)
{
case 'proxy':
if(messageObject.data == null || messageObject.data == "") currentProxy = { type: 'direct' };
else currentProxy = messageObject.data;
break;
}
}
browser.runtime.onMessage.addListener(MessageHandler);
browser.proxy.onRequest.addListener(
ProxyManager.HandleRequest,
{urls: ["<all_urls>"]}
);
browser.webRequest.onAuthRequired.addListener(
ProxyManager.Auth,
{urls: ["<all_urls>"]},
["blocking"]
);
browser.webRequest.onCompleted.addListener(
ProxyManager.Complete,
{urls: ["<all_urls>"]}
);
browser.webRequest.onErrorOccurred.addListener(
ProxyManager.Error,
{urls: ["<all_urls>"]}
);
контент.js
window.addEventListener(
'message',
function(event)
{
if(event.data.type == 'selenium')
{
if (event.source == window)
{
browser.runtime.sendMessage({ type:event.data.type, data: { data: event.data.data, method: 'proxy' }});
}
else console.log(event.data);
}
},
false
);
manifest.json
{
"manifest_version": 2,
"name": "SeleniumAddon",
"version": "1.0a",
"description": "SeleniumAddon",
"permissions": [
"storage",
"proxy",
"webRequest",
"webRequestBlocking",
"browsingData",
"tabs",
"downloads",
"notifications",
"nativeMessaging",
"<all_urls>"
],
"background": {
"scripts": [
"background.js"
]
},
"content_scripts":
[
{
"matches": [ "<all_urls>" ],
"js": [ "content.js" ]
}
],
"web_accessible_resources": [
"page.js"
],
"browser_specific_settings": {
"gecko": {
"strict_min_version": "91.1.0"
}
}
}
Если я запускаю код (на странице и в консоли *window.postMessage({ type: "selenium", data: proxyData }, '*')) на веб-расширении все в порядке и работает (точка останова запускает журнал вывода консоли). Но я подписываю это расширение и запускаю сообщение firefox по умолчанию, которое не работает, и сообщение не отправляется MessageHandler. Почему это происходит? Я понял, в чем проблема. Работает только на открытых веб-страницах. Как заставить content.js работать и на about:home?