我的 chrome 扩展无法在 Edge 上运行

My chrome extension is not working on Edge

我有一段代码在 chrome 上运行良好。我做了下面提到的步骤 here。 我能够正确加载它,但代码没有正确 运行。 在后台控制台中,只有 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"
    }
}

我测试发现,如果我们删除 window.onload,那么该扩展将在 Edge Legacy 中正常运行。它将 print all the consoles.

您可以在 document_idle 处设置 content.script 运行。它等于 window.onload 并且您不需要监听 window.onload 事件。更详细的信息可以参考this article.

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