Google chrome extension Can';t安装后在边缘扩展中执行内容脚本

Google chrome extension Can';t安装后在边缘扩展中执行内容脚本,google-chrome-extension,microsoft-edge,microsoft-edge-extension,Google Chrome Extension,Microsoft Edge,Microsoft Edge Extension,在Chrome中,可以在安装扩展后运行内容脚本,也就是说,下面的代码起作用,安装后所有打开选项卡的控制台日志中都会显示“内容脚本”字样 然而,在Edge中,这不起作用。这似乎是一个边缘缺陷。 有没有办法在所有选项卡中安装扩展后执行content-script.js background.js browser.runtime.onInstalled.addListener(function(details) { var scripts = browser.runtime.getManif

在Chrome中,可以在安装扩展后运行内容脚本,也就是说,下面的代码起作用,安装后所有打开选项卡的控制台日志中都会显示“内容脚本”字样

然而,在Edge中,这不起作用。这似乎是一个边缘缺陷。 有没有办法在所有选项卡中安装扩展后执行content-script.js

background.js

browser.runtime.onInstalled.addListener(function(details) { 
    var scripts = browser.runtime.getManifest().content_scripts[0].js;
    browser.tabs.query({}, function(tabs) {
        tabs.forEach(function(tab){
            for(var k=0; k<scripts.length; k++) {
                browser.tabs.executeScript(tab.id, {
                    file: scripts[k]
                });
            }
        });
    });
});

我可以看到您正在使用MS Edge旧版测试扩展

Microsoft不再接受MS Edge旧版的新扩展


我建议您为新的MS Edge Chromium浏览器开发一个扩展。您可以鼓励用户移动到新的边缘浏览器。由于新的MS Edge使用Chromium浏览器引擎,它也可能有助于解决此问题。

如果您使用持久化背景脚本,您只需在开始时向任何匹配的选项卡发送测试消息(您的内容脚本将以“ok”或
true
之类的任何方式响应)即可执行检查,因此如果没有响应,继续回注。对于非持久性脚本,您可以使用任何其他事件并执行相同的检查。这不是检查内容脚本是否处于活动状态,在边缘中(重新)注入根本不起作用。FWIW executeScript在当前基于铬的边缘中对我有效。您是否调试了代码以查看它在哪一点失败?它是onInstalled本身、query()还是executeScript?executeScript在常规工作中,但不在onInstalled的上下文中。似乎调用了executeScript(查询工作,对于循环运行,没有错误消息),但没有效果。我明白了。尝试添加
runAt:'document\u start'
,因为它可能认为选项卡仍在加载。
console.log("content script");