用于刷新页面的chrome扩展API

pw9qyyiw  于 2022-12-06  发布在  Go
关注(0)|答案(6)|浏览(221)

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

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

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

6ioyuze2

6ioyuze21#

我想你要找的是:

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

有关详细信息,请查看tabs API() documentation

wribegjk

wribegjk2#

已接受答案使用的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似乎也表明了这一点。

11dmarpk

11dmarpk3#

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

nuypyhwy

nuypyhwy4#

更具体地说:

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

tez616oj5#

您也可以使用此选项:

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

重载函数参数:整数tabId、对象reloadProperties、函数回调
参考:http://developer.chrome.com/extensions/tabs.html#method-reload

i5desfxk

i5desfxk6#

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

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

您可以更改参数对象以仅获取活动选项卡,因为{status:'complete', active: true}引用chrome扩展的查询API
未使用chrome.tabs.reload的原因:
如果标签页的属性(尤其是tab.url)没有改变,标签页就不会重新加载。如果你想每次都强制重新加载,最好用标签页自己的tab.url更新标签页的URL,它会发送属性改变的事件,标签页就会自动重新加载。

相关问题