Мое расширение chrome не работает на Edge - PullRequest
1 голос
/ 07 мая 2020

У меня есть фрагмент кода, который отлично работает на chrome. Я выполнил следующий шаг, упомянутый здесь . Я могу загрузить его правильно, но код работает некорректно. В фоновой консоли печатается только URL-адрес, другие консоли и предупреждения не работают. Пожалуйста, любая помощь будет оценена по достоинству! Пожалуйста

window.onload = function() {
	console.log("blah1");
	var port = browser.runtime.connect({name: "knockknock"});
	port.postMessage({request: "sendData"});
	port.onMessage.addListener(function(msg) {
		console.log("blah2");
		if(msg != null){
			
		}
	});
}
var sendData = null;
var url = null;
browser.webRequest.onBeforeRequest.addListener(function(details) {
	if(details != null && sendData == null && details.url.includes("www")){
		console.log(details.url);
		sendData = details.url;
	}
},
{urls: ["<all_urls>"]},
["blocking", "requestBody"]
);	

browser.runtime.onConnect.addListener(function(port) {
	console.log("inside addListener")
	port.onMessage.addListener(function(msg) {
		if (msg.request == "sendData"){
			console.log("sendData : ", sendData);
		  port.postMessage(sendData);
		}else if (msg.answer == null){
			sendData = null;
		}
	});
});

Мой файл манифеста

{
    "manifest_version": 2,
    "name": "test",
    "version": "1.0.0",
    "author": "medha",

    "icons": {
        "48": "esso.png"
    },

    "content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js": ["content.js"]
        }
    ],
    "background": {
        "scripts": ["background.js"]
    },

    "permissions": [ "webRequest", "webRequestBlocking", "webNavigation", "tabs", "<all_urls>", "storage"],

    "-ms-preload": {
      "backgroundScript": "backgroundScriptsAPIBridge.js",
      "contentScript": "contentScriptsAPIBridge.js"
    }
}

1 Ответ

0 голосов
/ 15 мая 2020

Я проверил и обнаружил, что если мы удалим window.onload, расширение будет хорошо работать в Edge Legacy. Он будет распечатать все консоли .

Вы можете установить content.script для запуска на document_idle. Он равен window.onload, и вам не нужно прослушивать событие window.onload. Для получения более подробной информации вы можете обратиться к этой статье .

Мой манифест. json выглядит так:

{
    "manifest_version": 2,
    "name": "test",
    "version": "1.0.0",
    "author": "medha",

    "icons": {
        "48": "esso.png"
    },

    "content_scripts": [
        {
            "matches": ["<all_urls>"],
            "run_at": "document_idle",
            "js": ["content.js"]
        }
    ],
    "background": {
        "scripts": ["background.js"],
        "persistent": true
    },

    "permissions": [ "webRequest", "webRequestBlocking", "webNavigation", "tabs", "<all_urls>", "storage"],

    "-ms-preload": {
      "backgroundScript": "backgroundScriptsAPIBridge.js",
      "contentScript": "contentScriptsAPIBridge.js"
    }
}
...