API расширения Chrome для обновления страницы - PullRequest
20 голосов
/ 01 декабря 2011

Существует ли API для программного обновления текущей вкладки изнутри кнопки действия браузера? У меня настроена фоновая страница, которая присоединяет слушателя через:

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

Таким образом, функция обратного вызова извлекает ссылку на вкладку, с которой она была нажата, но я нигде не вижу API для обновления / перезагрузки этой вкладки.

Ответы [ 6 ]

38 голосов
/ 20 января 2012

Я думаю, что вы ищете:

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

Проверьте вкладки API () документации для получения дополнительной информации.

28 голосов
/ 11 августа 2014

API для chrome.tabs.getSelected (), который использует принятый ответ, устарел .Вместо этого вы должны получить текущую вкладку и перезагрузить ее, используя что-то вроде следующего:

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);
});

Мне не повезло со второй версией, хотя другие ответыкажется, предложить это должно работать.Похоже, API тоже это предлагает.

26 голосов
/ 01 декабря 2011

Я рекомендую использовать chrome.tabs.executeScript для вставки JavaScript, который вызывает window.location.reload(), в текущую вкладку.Что-то вроде:

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

Ссылка здесь

6 голосов
/ 10 сентября 2013

Более конкретно:

chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.reload(tab.id);
});
4 голосов
/ 06 октября 2013

Вы также можете использовать это:

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

перезагрузить параметры функции: целое число tabId, объект reloadProperties, обратный вызов функции

ссылка: http://developer.chrome.com/extensions/tabs.html#method-reload

0 голосов
/ 18 июня 2018

если вы хотите перезагрузить все вкладки, которые полностью загружены и активны в их окне

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

, вы можете изменить объект параметра, чтобы получать только активные вкладки как {status:'complete', active: true} см. запрос API расширений Chrome

Причина неиспользования chrome.tabs.reload:

Если свойства вкладки, особенно tab.url, не изменились, вкладка не будетперезагрузить.Если вы хотите принудительно перезагружать каждый раз, лучше обновить URL-адрес вкладки своим собственным tab.url, который отправляет событие изменения свойства, и вкладка автоматически перезагружается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...