Расширение 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?

0 ответов

Другие вопросы по тегам