Перезагрузите вкладки расширения Chrome - PullRequest
3 голосов
/ 24 февраля 2012

Есть ли способ получить идентификаторы вкладок только для вкладок, которые являются частью моего расширения?

Ответы [ 3 ]

4 голосов
/ 17 октября 2012
myTabs[i].location.reload()

делает ошибку:

Uncaught TypeError: Cannot call method 'reload' of undefined

, но этот код:

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

работает.Но лучше использовать правильный метод :

chrome.tabs.reload(myTabs[i].id)
1 голос
/ 24 февраля 2012

Это действительно зависит от того, что вы подразумеваете под «частью моего расширения».

Если вы имеете в виду вкладки, на которых отображается страница вашего расширения, вы можете сделать следующее;

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()
}
0 голосов
/ 07 декабря 2015

Я пытался сделать то же самое, и использование chrome.tabs.query и chrome.tabs.get не работало для меня. Это сработало отлично:

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