Ski*_*zit 25 javascript google-chrome-extension browser-tab
如何迭代用户打开的所有选项卡,然后检查他们是否有特定的HTML项目id = 'item'?
Gol*_*oom 59
看来这个方法已被弃用,有利于chrome.tabs.query:
http://developer.chrome.com/extensions/tabs.html#method-query
所以现在你想做:
chrome.tabs.query({}, function(tabs) { /* blah */ } );
Run Code Online (Sandbox Code Playgroud)
传递空queryInfo参数将返回所有选项卡.
Sin*_*dar 20
你可以这样做:
chrome.tabs.getAllInWindow(null, function(tabs){
for (var i = 0; i < tabs.length; i++) {
chrome.tabs.sendRequest(tabs[i].id, { action: "xxx" });
}
});
Run Code Online (Sandbox Code Playgroud)
之后,为了照顾你的项目,如果你可以这样做:
document.getElementById('item')
Run Code Online (Sandbox Code Playgroud)
不要忘记你不能通过使用"后台页面"来操纵HTML所以第一个代码片段用于后台页面,第二个代码片段必须在内容脚本上;)
小智 10
这个答案最初是为 MV3 用户编写的。如果您正在寻找 MV2 答案,请参见上文。否则,这个答案将与 MV3 完美配合。
chrome.tabs.query是您正在寻找的功能。您可以将参数传递给对象来过滤选项卡。在您的情况下,您想要迭代所有打开的选项卡。这是您正在寻找的代码的两个版本:
chrome.tabs.query({}, function(tabs) {
tabs.forEach(function (tab) {
// do whatever you want with the tab
});
});
Run Code Online (Sandbox Code Playgroud)
var tabs = await chrome.tabs.query({});
tabs.forEach(function (tab) {
// do whatever you want with the tab
});
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,参数tab都是Tab。