2016-07-24 11 views
1

Derzeit Erweiterung und ich Nachricht von meiner HTML-Seite zu senden, Chrom wiederumGet Fenster-ID von Javascript mit Hilfe von Chrome-Erweiterung

chrome.windows.getCurrent(function (win) { 
    callback(win.id) 
}); 

ruft Fenster Id zu erhalten. Aber wenn der Benutzer ein anderes (oder neues öffnet) Fenster vor diesem Aufruf auswählt, erhalte ich eine falsche ID. Wie bekomme ich ID von Fenster, wo mein js Code läuft?

+0

wenn Sie genau in den Fluss Ihrer App diesen Code ausführen? – vsync

+0

Meine aktuelle test.html hat setInterval, das eine Nachricht an die Erweiterung sendet, um getCurrent aufzurufen und windowId zurückzugeben. Wenn ich ein neues Fenster öffne, sehe ich in meiner Konsole, dass sich die Fenster-ID geändert hat. Das bedeutet, dass getCurrent das aktive Fenster, aber nicht das Fenster von test.html zurückgibt. –

+0

nur die letzte ID speichern, an die die Nachricht gesendet werden sollte, und wenn die aktuelle ID anders ist, dann nichts tun? oder warte, bis der Benutzer zurückwechselt .. vielleicht behalte eine Warteschlange, deren Nachricht zu welcher Fenster-ID gehört – vsync

Antwort

4

In Ihrem Hintergrund Skript, werden Sie wahrscheinlich verwenden chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){ ... }

In diesem Hörer können Sie sender.tab.windowId verwenden, um die Id des Fensters zu erhalten, die die Nachricht an das Hintergrundskript gesendet, unabhängig von den aktuellen aktiven Fenstern.

+0

Dies ist genau das, was ich brauche. THANX! –

+0

Gerne helfen :) –