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.
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
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.
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.
Plus précisement:
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.reload(tab.id);
});
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
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.