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