chrome.scripting.executeScript 无法在具有“tabs”和“<all_urls>”主机权限的预先存在的选项卡上运行

d-_*_*_-b 2 google-chrome-extension chrome-extension-manifest-v3

我有一个 chrome MV3 扩展,它具有以下 manifest.json:

{
  "manifest_version": 3,
  "permissions": [
    "scripting",
    "tabs"
  ],
  "host_permissions": ["<all_urls>"]
}
Run Code Online (Sandbox Code Playgroud)

当我安装扩展并具有现有选项卡时,我无法在这些现有选项卡上执行脚本:

chrome.scripting.executeScript({
  target: {tabId: 1305686273}, 
  func: function(){ console.log('hi'); }
});
Run Code Online (Sandbox Code Playgroud)

我在后台服务工作线程脚本中收到此错误:

无法访问页面内容。扩展清单必须请求访问相应主机的权限。

我的理解是,该tabs权限允许我在没有用户手势的情况下查询所有选项卡,并且"host_permissions": ["<all_urls>"]应该允许我在没有用户手势的情况下在所有选项卡上执行脚本。

我是否错了,或者是否缺少某些内容来允许在没有用户手势的情况下在页面上编写脚本?

PS 运行chrome.tabs.get(1305686273).then(console.log)效果符合预期。

d-_*_*_-b 5

chrome.scripting似乎对安装扩展之前存在的选项卡抛出此错误。

无法访问页面内容。扩展清单必须请求访问相应主机的权限。

对于任何新创建的选项卡,脚本都会按预期工作,无论用户是否单击了扩展程序。

我发现一种解决方法是调用chrome.tabs.reload(tabId)那些预先存在的选项卡,然后chrome.scripting将按预期工作。

将向 chrome 团队提出错误。