Я пытался создать функцию JavaScript для веб-приложения Google Chrome, которая проверяет, есть ли какие-либо открытые экземпляры приложения, и, если таковые имеются, заставляет их обновить страницу.
Мой оригинальный код выглядит следующим образом:
chrome.tabs.getAllInWindow(undefined, function(tabs) {
for (var i = 0, tab; tab = tabs[i]; i++) {
if (tab.url == "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html") {
chrome.tabs.update(tab.id, {url: "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html"});
}
}
});
Но это работает только для всех вкладок в текущем окне.Если есть экземпляры в их собственном окне или в другом окне, они не будут обновляться.
Я адаптировал его, чтобы заставить его работать на всех открытых страницах, а не только на тех, которые находятся в текущем выбранном окне, напримертак:
chrome.windows.getAll({populate: true}, function(tabs) {
for (var i = 0, tab; tab = tabs[i]; i++) {
if (tab.url == "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html") {
chrome.tabs.update(tab.id, {url: "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html"});
}
}
});
Хотя новый код не возвращает ошибку в консоли JavaScript, он, похоже, не выполняет то, что должен;обновите все открытые экземпляры страницы приложения.
Я неправильно понял модуль windows.getAll?Кто-нибудь может предложить рабочее решение?