用于刷新页面的chrome扩展API

时间:2011-12-01 14:17:09

标签: google-chrome google-chrome-extension

是否有API以编程方式从浏览器操作按钮内刷新当前选项卡?我配置了后台页面,它通过以下方式附加一个监听器:

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

因此回调函数会检索对其单击的选项卡的引用,但我没有在任何地方看到API来刷新/重新加载该选项卡。

6 个答案:

答案 0 :(得分:37)

我认为您正在寻找的是:

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

查看tabs API() documentation了解详情。

答案 1 :(得分:28)

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

我对第二个版本没有运气,但其他答案似乎表明它应该有效。 API似乎也表明了这一点。

答案 2 :(得分:26)

我建议使用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});
});

参考here

答案 3 :(得分:6)

更具体地说:

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

答案 4 :(得分:4)

你也可以用这个:

chrome.tabs.reload(函数(){});

重装功能参数: 整数tabId,对象reloadProperties,函数回调

参考:http://developer.chrome.com/extensions/tabs.html#method-reload

答案 5 :(得分:0)

  

如果要重新加载已完全加载且在其窗口中处于活动状态的所有选项卡

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,该选项会发送属性和选项卡中的更改事件自动重新加载。