web-dev-qa-db-fra.com

aPI d'extension chrome pour actualiser la page

Existe-t-il une API permettant d'actualiser par programmation l'onglet en cours à partir d'un bouton d'action du navigateur? J'ai une page de fond configurée, qui attache un auditeur via:

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

Ainsi, la fonction de rappel récupère une référence à l'onglet à partir duquel il a été cliqué, mais je ne vois nulle part d'API pour actualiser/recharger cet onglet.

18
chinabuffet

Je recommande d'utiliser chrome.tabs.executeScript pour injecter du javascript qui appelle window.location.reload() dans l'onglet en cours. Quelque chose comme:

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

Référence ici

22
Boris Smus

Je pense que ce que vous cherchez, c'est:

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

Consultez onglets API () documentation pour plus d'informations.

35
Mitya

L'API de chrome.tabs.getSelected (), utilisée par la réponse acceptée, est obsolète . Vous devriez plutôt obtenir l'onglet en cours et le recharger en utilisant quelque chose comme:

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

Ou peut-être:

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

La deuxième version ne m'a pas vraiment porté chance, mais d'autres réponses semblent suggérer qu'elle devrait fonctionner. L'API semble suggérer cela aussi.

28
Michael Oryl

Plus précisement:

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

vous pouvez aussi utiliser ceci:

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

reload function params: entier tabId, objet reloadProperties, rappel de fonction

référence: http://developer.chrome.com/extensions/tabs.html#method-reload

3
Selman Kahya

si vous voulez recharger tous les onglets complètement chargés et actifs dans leur fenêtre

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

vous pouvez modifier l'objet paramètre pour qu'il ne récupère que les onglets actifs, car {status:'complete', active: true} fait référence à query api des extensions chrome

Raison pour laquelle vous n'avez pas utilisé chrome.tabs.reload:

Si les propriétés de l'onglet, en particulier tab.url, n'ont pas changé, on ne recharge pas. Si vous voulez forcer le rechargement à chaque fois, il est préférable de mettre à jour l'URL de l'onglet avec son propre onglet.url qui envoie l'événement de la modification de la propriété et l'onglet se recharge automatiquement.

0
Irshad