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



我在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会用于更新的选项卡,但它似乎总是活动的选项卡。

有没有办法弄清楚更新了什么选项卡,这样我就可以将正确的tabId传递给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引导我找到了我需要的东西。我确实需要一个内容脚本,我认为我没有看到预期结果的原因是我未能删除和重新添加扩展。有时它似乎尊重所做的更改,但当您对清单进行更改时,可能需要删除并重新添加扩展。

一旦我做到了这一点,它就正确地在非活动选项卡上工作。

最新更新