31

我将如何遍历用户打开的所有选项卡,然后检查他们是否有特定的 HTML 项目id = 'item'

4

4 回答 4

71

看来这种方法已被弃用,取而代之的是chrome.tabs.query

http://developer.chrome.com/extensions/tabs.html#method-query

所以现在你想做:

chrome.tabs.query({}, function(tabs) { /* blah */ } );

传递一个空queryInfo参数将返回所有选项卡。

于 2013-03-07T21:20:43.627 回答
23

你可以这样:

chrome.tabs.getAllInWindow(null, function(tabs){
    for (var i = 0; i < tabs.length; i++) {
    chrome.tabs.sendRequest(tabs[i].id, { action: "xxx" });                         
    }
});

之后照顾你的物品,如果你能做到这样:

document.getElementById('item')

不要忘记您不能通过使用“背景页面”来操作 HTML 所以第一个代码片段用于背景页面,第二个必须在内容脚本上;)

于 2011-03-23T17:30:17.857 回答
2

这是一种未弃用的香草方式(2019 年 5 月):

chrome.tabs.query({}, function(tabs){
        tabs.forEach(tb => {
            chrome.tabs.sendMessage(tb.id, { action: "xxx" });
        });
    });
于 2019-05-31T16:32:10.307 回答
1

chrome.tabs.query是您正在寻找的功能。您可以将参数传递给对象以过滤选项卡。在您的情况下,您想要遍历所有打开的选项卡。这是您要查找的代码的两个版本:

同步

chrome.tabs.query({}, function(tabs) {
  tabs.forEach(function (tab) {
    // do whatever you want with the tab
  });
});

异步

var tabs = await chrome.tabs.query({});
tabs.forEach(function (tab) {
  // do whatever you want with the tab
});

在这两种情况下,参数tab都是Tab

于 2021-08-14T21:09:19.180 回答