2012-02-24 34 views
1

拡張機能の一部であるタブのみのタブIDを取得する方法はありますか?Chrome拡張タブを再読み込み

+2

「自分の内線の一部」を意味しますか?拡張機能を作成するときに作成するタブを追跡するだけで済みます。 –

答えて

2

これは本当に「自分の内線の一部」の意味によります。

拡張子に含まれるページを表示しているタブを意味する場合は、次の操作を実行できます。

chrome.tabs.query({}, function (tabs) { 
    var myTabs = []; 
    for (var i = 0; i < tabs.length; i++) { 
    if (tabs[i].url.indexOf(chrome.extension.getURL('')) === 0) { 
     myTabs.push(tabs[i].id); 
    } 
    } 
    console.log(myTabs); 
}); 

代わりにタブのDOMにアクセスしたい場合は、さらに簡単になります。あなたは、単に各ビュー(DOMWindow)の反復処理し、各ページを更新することができますDOMにアクセスして

var myTabs = chrome.extension.getViews({type: 'tab'}); 

Uncaught TypeError: Cannot call method 'reload' of undefined 

が、このコード:

chrome.tabs.executeScript(myTabs[i].id, {code:"document.location.reload(true);"}); 

作品

for (var i = 0; i < myTabs.length; i++) { 
    myTabs[i].location.reload() 
} 
+0

'getViews'メソッドを使用すると、' tabs'パーミッションを含めることができなくなります。 –

3
myTabs[i].location.reload() 

はエラーになります。しかしcorrect method使用することをお勧め:

chrome.tabs.reload(myTabs[i].id) 
+1

答えでは、受け入れられた答えから 'myTabs'を参照しています。回答者(紛らわしいことに)は、異なるコレクションに対して同じ名前(「myTabs」)を使用することに注意してください。 'chrome.tabs.query'の' myTabs'は[Tab type](http://developer.chrome.com/extensions/tabs.html#type-Tab)を返します。これは 'window 'オブジェクト。この場合、あなたの答えは正しいです。他の答えの一番下にある 'myTabs'は' chrome.extension.getViews'から返される 'window'オブジェクトの配列です。最後のコードスニペットは最後の 'myTabs'オブジェクトにのみ適用されます。 –

0

を私は同じことを行うことを試みてきたとchrome.tabs.querychrome.tabs.getを使用すると、私のために動作しませんでした。これは完全に機能しました:

var data = chrome.extension.getViews({'type':'tab'}); 
$.each(data, function(k,v) { 
    v.window.location.reload(); 
}); 
関連する問題