web-dev-qa-db-ja.com

chromeページを更新するための拡張API

ブラウザのアクションボタン内から現在のタブをプログラムで更新するAPIはありますか?私はバックグラウンドページを構成しました。

chrome.browserAction.onClicked.addListener(function(tab) { ... });

そのため、コールバック関数はクリックされたタブへの参照を取得しますが、そのタブを更新/再ロードするためのAPIがどこにもありません。

22
chinabuffet

_chrome.tabs.executeScript_を使用して、window.location.reload()を呼び出すJavaScriptを現在のタブに挿入することをお勧めします。何かのようなもの:

_chrome.tabs.getSelected(null, function(tab) {
  var code = 'window.location.reload();';
  chrome.tabs.executeScript(tab.id, {code: code});
});
_

参照 ここ

27
Boris Smus

私が探しているのは:

chrome.tabs.reload(integer tabId, object reloadProperties, function callback)

詳細は tabs API()のドキュメント をご覧ください。

42
Mitya

受け入れられた回答が使用するchrome.tabs.getSelected()のAPI 非推奨になりました。代わりに、現在のタブを取得し、次のようなものを使用して再読み込みする必要があります。

chrome.tabs.query({active: true, currentWindow: true}, function (arrayOfTabs) {
    var code = 'window.location.reload();';
    chrome.tabs.executeScript(arrayOfTabs[0].id, {code: code});
});

多分:

chrome.tabs.query({active: true, currentWindow: true}, function (arrayOfTabs) {
    chrome.tabs.reload(arrayOfTabs[0].id);
});

他の答えはそれがうまくいくことを示唆しているようですが、私は2番目のバージョンでは本当に運がありませんでした。 APIもそれを示唆しているようです。

29
Michael Oryl

すなわち:

chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.reload(tab.id);
});
7
Jude Osborn

これを使用することもできます:

chrome.tabs.reload(function(){});

リロード関数パラメーター:整数tabId、オブジェクトreloadProperties、関数コールバック

リファレンス: http://developer.chrome.com/extensions/tabs.html#method-reload

4
Selman Kahya

完全に読み込まれ、ウィンドウでアクティブになっているすべてのタブを再読み込みする場合

chrome.tabs.query({status:'complete'}, (tabs)=>{
tabs.forEach((tab)=>{
    if(tab.url){
        chrome.tabs.update(tab.id,{url: tab.url});
     }
    });
});

{status:'complete', active: true}を参照して、アクティブなタブのみをフェッチするようにパラメーターオブジェクトを変更できます query api of chrome extensions

chrome.tabs.reloadを使用しない理由:

タブのプロパティ、特にtab.urlが変更されていない場合、タブはリロードされません。毎回強制的に再読み込みしたい場合は、プロパティの変更のイベントを送信する独自​​のtab.urlでタブURLを更新し、タブが自動的に再読み込みされるようにします。

0
Irshad