web-dev-qa-db-ja.com

Chrome拡張機能:すべてのタブを反復処理しますか?

ユーザーが開いているすべてのタブを繰り返し処理してから、id = 'item'の特定のHTMLアイテムがあるかどうかを確認するにはどうすればよいですか?

27
Skizit

あなたはそれをこのようにすることができます:

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を操作できないことを忘れないでください。したがって、最初のコードスニップはバックグラウンドページ用であり、2番目はコンテンツスクリプト上にある必要があります;)

20
Sindar

このメソッドはchrome.tabs.queryを優先して非推奨になっているようです。

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

だから今あなたがしたいでしょう:

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

空のqueryInfoパラメータを渡すと、すべてのタブが返されます。

59

これは非推奨ではないバニラの方法です(2019年5月):

chrome.tabs.query({}, function(tabs){
        tabs.forEach(tb => {
            chrome.tabs.sendMessage(tb.id, { action: "xxx" });
        });
    });
0
Emeeus