Error: No window matching {"matchesHost":[]} for tabs.insertCSS()

Error: No window matching {"matchesHost":[]} for tabs.insertCSS()

我正在编写一个 WebExtension,其中后台脚本在弹出窗口 window(UI 脚本)和网页(内容脚本)之间进行通信。

使用 port = browser.runtime.connect({name: "ProjName"});,内容脚本在加载后立即连接到后台脚本。

后台脚本注册:

function connected(p) {
    ...
        console.log(p.sender.tab.id); // <-- works fine, gives me an integer Tab ID
        browser.tabs.insertCSS(p.sender.tab.id, {file : "/css/stylesheetName.css"});
    ...
}

browser.runtime.onConnect.addListener(connected);

并尝试 insertCSS(),使用发送标签的 ID。

我总是收到 Error: No window matching {"matchesHost":[]} 消息。 我不确定这里发生了什么,我不确定脚本的哪一部分现在与主机匹配...?!?

我可以在完全相同的地方使用 browser.tabs.sendMessage(p.sender.tab.id, msg);。该死,如果我知道如何可靠地从磁盘读取文件,此时我会通过 sendMessage 发送它的内容。

这可能来自哪里?

编辑: 我已将其精简为仅包含必要的代码(没有 page_Action、没有弹出窗口等)并上传了一个 .zip:[已删除] 您可以在 firefox about:debugging 页面上加载为临时插件

我花了 Chrome 调整它并查看那里的背景页面... 虽然我在 Firefox 中启用了扩展日志记录,但它并没有给我我需要的东西,但是 Chrome 做到了: 这是另一个缺少 权限

Unchecked runtime.lastError while running tabs.insertCSS: Cannot access contents of url "[url]". Extension manifest must request permission to access this host.

"<all_urls>" 添加到 manifest.json 中的权限就成功了:

"permissions": [
    "activeTab",
    "tabs",
    "storage",
    "<all_urls>"
],