Google chrome extension chrome.tabs.executeScript似乎只在活动选项卡中执行

Google chrome extension chrome.tabs.executeScript似乎只在活动选项卡中执行,google-chrome-extension,Google Chrome Extension,我在background.js中有以下代码 chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) { if (changeInfo.status == 'complete') { chrome.tabs.executeScript(tabId, { file: 'inject.js' }); } // if (changeInfo.status

我在background.js中有以下代码

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete') {

        chrome.tabs.executeScript(tabId, {
            file: 'inject.js'
        });

  } // if (changeInfo.status == 'complete') {
});
但是,当我更改选项卡时,inject.js仅在活动选项卡中运行,即使非活动选项卡得到更新。在inject.js中,我有一个为特定网站运行的自动过程,它通过点击一些页面来查找特定文本。即使我打开了一个新选项卡,我也希望它继续在该选项卡上运行。但一旦我改变标签,注射只在活动标签上发生。我以为tab.tabId或tabId会用于已更新的选项卡,但它似乎总是活动的选项卡

是否有办法确定更新了哪些选项卡,以便将正确的选项卡ID传递给executeScript

以下是我的清单的外观:

{
  "name": "Automated test",
  "version": "0.0.1",
  "manifest_version": 2,
  "background": {
    "scripts": [
      "background.js"
    ],
    "persistent": true
  },
  "browser_action": {
    "default_title": "Test"
  },
  "permissions": [
    "https://*/*",
    "http://*/*",
    "tabs",
    "webNavigation"
  ]
}

所以,@wOxxOm引导我找到了我需要的东西。我确实需要一个内容脚本,我认为我没有看到预期结果的原因是我未能删除并重新添加扩展。有时,它似乎尊重所做的更改,但当您对清单进行更改时,可能需要删除并重新添加扩展


一旦我这样做了,它就可以在非活动选项卡上正常工作。

不,executeScript将在它应该运行的地方运行。问题是站点脚本停止在非活动选项卡中。顺便说一句,如果你只有这些未更新的代码,你可以简单地改为。是的,我也在玩内容脚本。似乎如果我开始打开标签,所有东西都会在我活动的地方运行,尽管我希望它在一个标签上继续运行。我可能很容易在内容脚本方面遗漏了一些东西。