Ich habe versucht, eine JavaScript-Funktion für eine Google Chrome-Webanwendung zu erstellen, die überprüft, ob geöffnete Instanzen der Webanwendung vorhanden sind Anwendung, und wenn dies der Fall ist, zwingt sie die Seite zu aktualisieren.Erzwingen, dass alle geöffneten Instanzen einer Webseite in einer Google Chrome-Webanwendung aktualisiert werden
Mein ursprünglicher Code ist wie folgt:
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"});
}
}
});
Das funktioniert aber nur für alle innerhalb des aktuellen Fenstertabs. Wenn sich Instanzen in ihrem eigenen Fenster oder in einem anderen Fenster befinden, werden sie nicht aktualisiert.
Ich passte es in einem Versuch, es für alle offenen Seiten funktioniert, und nicht nur die in der aktuell gewählten Fenster wie folgt:
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"});
}
}
});
Während der neue Code keinen Fehler in der JavaScript-Rück Konsole, scheint es nicht zu tun, was es tun soll; Aktualisieren Sie alle geöffneten Instanzen der Anwendungsseite.
Habe ich das windows.getAll-Modul falsch verstanden? Kann jemand eine funktionierende Lösung anbieten?
Ich habe es nie benutzt, aber ich denke, den Rückruf Auf Windows.getAll gibt Ihnen ein Array von Windows nicht Tabs. So sollte es 'chrome.windows.getAll ({populate: true}, Funktion (Windows) {' in dieser Funktion können Sie durch Fenster und dann in jedem Fenster Schleife durch Tabs – Adam
Eigentlich müssen Sie nicht die chrome.windows verwenden Alles was er gerade tut, ist das Überprüfen seiner Erweiterungsseiten. Es ist sauberer und schneller, 'chrome.extension.getViews()' zu verwenden. Ich habe ein Beispiel in meinem Post unten hinzugefügt. –