Chrome-Extension: iterate through all tabs?

后端 未结 4 1050
小蘑菇
小蘑菇 2021-02-03 22:23

How would I iterate through all tabs a user has open and then check if they have a particular HTML item with id = \'item\'?

相关标签:
4条回答
  • 2021-02-03 22:29

    I use this one

    chrome.tabs.getAllInWindow(null, function(tabs) {
          $.each(tabs, function() {
            // u can use 'this.id' to work with evey tab 
          });
    });
    
    0 讨论(0)
  • 2021-02-03 22:33

    It appears this method has been deprecated in favor of chrome.tabs.query:

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

    So now you'd want to do:

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

    Passing an empty queryInfo parameter would return all of the tabs.

    0 讨论(0)
  • 2021-02-03 22:33

    This is a not deprecated vanilla way (may 2019):

    chrome.tabs.query({}, function(tabs){
            tabs.forEach(tb => {
                chrome.tabs.sendMessage(tb.id, { action: "xxx" });
            });
        });
    
    0 讨论(0)
  • 2021-02-03 22:42

    You can make it like this :

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

    After that to look after your item, if you can make it like this :

    document.getElementById('item')
    

    Don't forget that you can't manipulate the HTML by using the "background page" So the first code snip is for the background page, and the second have to be on a content script ;)

    0 讨论(0)
提交回复
热议问题