首页 > 解决方案 > 我的 chrome 扩展程序无法在 Edge 上运行

问题描述

我有一段代码在 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"
    }
}

标签: google-chrome-extensionmicrosoft-edgemicrosoft-edge-extension

解决方案


我测试并发现如果我们删除,window.onload那么扩展将在 Edge Legacy 中运行良好。它将打印所有控制台

您可以将 content.script 设置为运行在document_idle. 它等于window.onload并且您不需要监听该window.onload事件。更详细的信息,您可以参考这篇文章

我的manifest.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"
    }
}

推荐阅读