【问题标题】:Reload Chrome extension tabs重新加载 Chrome 扩展选项卡
【发布时间】:2012-03-14 12:52:32
【问题描述】:

有没有办法只获取属于我的扩展程序一部分的选项卡的选项卡 ID?

【问题讨论】:

  • “我的扩展的一部分”是什么意思?您可以在创建它们时跟踪您的扩展程序创建的标签。

标签: google-chrome google-chrome-extension browser-tab


【解决方案1】:
myTabs[i].location.reload()

出错:

Uncaught TypeError: Cannot call method 'reload' of undefined

但是这段代码:

chrome.tabs.executeScript(myTabs[i].id, {code:"document.location.reload(true);"});

有效。但最好使用correct method

chrome.tabs.reload(myTabs[i].id)

【讨论】:

  • 在您的回答中,您指的是接受的答案中的myTabs。请注意,回答者(令人困惑)对不同的集合使用相同的名称(myTabs)。来自chrome.tabs.querymyTabs 返回一个Tab type,它没有直接引用window 对象。对于这种情况,您的答案是正确的。在另一个答案的底部,myTabswindow 对象的数组(从chrome.extension.getViews 返回)。最后一个代码 sn -p 只适用于最后一个myTabs 对象。
【解决方案2】:

这真的取决于你所说的“我的扩展的一部分”是什么意思。

如果您指的是显示包含在您的扩展程序中的页面的选项卡,您可以执行以下操作;

chrome.tabs.query({}, function (tabs) {
  var myTabs = [];
  for (var i = 0; i < tabs.length; i++) {
    if (tabs[i].url.indexOf(chrome.extension.getURL('')) === 0) {
      myTabs.push(tabs[i].id);
    }
  }
  console.log(myTabs);
});

如果您想访问选项卡的 DOM,它会变得更加容易;

var myTabs = chrome.extension.getViews({type: 'tab'});

通过访问 DOM,您可以简单地迭代每个视图 (DOMWindow) 并刷新每个页面;

for (var i = 0; i < myTabs.length; i++) {
  myTabs[i].location.reload()
}

【讨论】:

  • 我会使用getViews 方法,因为这将消除您包含tabs 权限。
【解决方案3】:

我尝试做同样的事情,但使用 chrome.tabs.querychrome.tabs.get 对我不起作用。这非常有效:

var data = chrome.extension.getViews({'type':'tab'});
$.each(data, function(k,v) {
    v.window.location.reload();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多