Расширение Chrome: перебирать все вкладки? - PullRequest
25 голосов
/ 23 марта 2011

Как перебрать все вкладки, открытые пользователем, и затем проверить, есть ли у них определенный элемент HTML с id = 'item'?

Ответы [ 4 ]

57 голосов
/ 08 марта 2013

Похоже, этот метод устарел в пользу chrome.tabs.query:

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

Так что теперь вы хотите сделать:

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

Передача пустого параметра queryInfo вернет все вкладки.

19 голосов
/ 23 марта 2011

Вы можете сделать это так:

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 с помощью «фоновой страницы», поэтому первый фрагмент кода предназначен для фоновой страницы, а второй должен быть в скрипте содержимого;)

0 голосов
/ 31 мая 2019

Это не осуждаемый ванильный путь (май 2019):

chrome.tabs.query({}, function(tabs){
        tabs.forEach(tb => {
            chrome.tabs.sendMessage(tb.id, { action: "xxx" });
        });
    });
0 голосов
/ 15 июня 2017

Я использую это

chrome.tabs.getAllInWindow(null, function(tabs) {
      $.each(tabs, function() {
        // u can use 'this.id' to work with evey tab 
      });
});
...