【问题标题】:Can't execute content scripts in Edge extension after installation安装后无法在 Edge 扩展中执行内容脚本
【发布时间】:2020-03-13 16:52:56
【问题描述】:

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

但是,在 Edge 中,这不起作用。这似乎是Edge中的一个错误。 任何想法如何解决,以便在所有选项卡中的扩展安装后执行 content-script.js?

背景.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]
                });
            }
        });
    });
});

内容脚本.js

console.log("content script");

【问题讨论】:

  • 如果您使用持久性后台脚本,您可以简单地在开始时通过向任何匹配的选项卡发送测试消息来执行检查(您的内容脚本会以“ok”或true之类的内容进行响应)因此,如果没有响应,请继续重新注入。对于非持久性脚本,您可以使用任何其他事件并执行相同的检查。
  • 这不是检查内容脚本是否处于活动状态,在 Edge 中(重新)注入根本不起作用。
  • FWIW executeScript 在当前基于 Chromium 的 Edge 中为我工作。您是否调试了代码以查看它在哪一点失败?是 onInstalled 本身、query() 还是 executeScript?
  • executeScript 在一般工作中,但不是在 onInstalled 的上下文中。似乎调用了executeScript(查询有效,for循环运行,没有错误信息),但没有效果。
  • 我明白了。尝试添加runAt: 'document_start',因为它可能认为标签仍在加载。

标签: google-chrome-extension microsoft-edge microsoft-edge-extension


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2022-11-16
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2016-09-09
    • 1970-01-01
    相关资源
    最近更新 更多