Javascript: cross-domain-Fenster.close-Ereignis aus übergeordneten Fenster
Zum Beispiel bin ich auf domain1:
a.click(function(){
window.win=window.open(domain2,'name');
});
Nun bin ich auf domain2 und ich schließe es. Wie funktioniert Fenster.gewinnen wird wissen, dass der user dieses Fenster geschlossen? Gibt es irgendein Ereignis oder die Eigenschaft zu überprüfen, über Intervall?
- erkennt, wenn eine Cross-Domain-Popup-Fenster wird Geschlossen sehr ähnlich ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine Eigenschaft, die nicht Teil der W3C-spec. Es heißt
closed
und erhalten würde, so zugreifen wie aufIch bin nicht sicher über die cross-browser Kompatibilität für diese Eigenschaft. Ich bin mir auch nicht sicher, wie sich diese verhält sich auf cross-origin-domains. Aber wenn Sie es versuchen, bitte lassen Sie mich und den rest dieser Gemeinde zu kennen.
Andere option ist, dass Sie kümmert sich für die Mitteilung selbst. Das bedeutet, Sie sind empfangsbereit für die
onbeforeunload
innerhalb des popup-Fensters. Wenn das Ereignis ausgelöst wird, könnte man mit HTML5 istpostMessage
Methode, um die Kommunikation zwischen cross-domain-windows. Zum Beispiel:MainWindow:
Domain2:
Die einzige Einschränkung dieser Lösung ist, dass es nur kompatibel mit browser, die Unterstützung der Standard HTML5. Es gibt andere (hinterhältig) Möglichkeiten haben, eine cross-domain-Kommunikation auf der alten ' ish-Browser, aber ich denke, das ist eine andere Geschichte.
console.log()
dem Fenster zurück auswindow.open()
nachdem es geschlossen ist, erhalten Sie eine leere Instanz des Fensters. Versuchenconsole.log(window.win.closed)
, obwohl. Er kehrtefalse
für mich. Ich wäre sehr daran interessiert zu sehen, wo anders funktioniert es (insbesondere IE).closed
Eigentum ist Teil von HTML5 (developer.mozilla.org/en-US/docs/Web/API/Window/closed)Können Sie überprüfen, ob die cross-domain wurde geschlossen durch die Verwendung einer Intervall-check auf dem windows closed-Eigenschaft.
War ich arbeiten, auf die ähnliches problem, in dem ein Fenster der domain1 ist geöffnet von domain2. Ich musste die Kontrolle behalten, wenn das Fenster geschlossen wird. Ich habe versucht Folgendes :-
Ich verwendete Fenster.onunload-event , es hat nicht funktioniert, weil der Same-Origin-Policy und zeigte folgende Fehlermeldung
Fehler: Versuch zum ausführen compile-and-go-Skript auf einem geräumten Bereich
Quell-Datei: chrome://firebug/content/net/httpLib.js
Fehler: Versuch zum ausführen compile-and-go-Skript auf einem geräumten Bereich
Quell-Datei: chrome://firebug/content/firefox/tabWatcher.js
Aber ich verwaltet ein array von Window-Objekte und angewandte " - Fenster.geschlossen" Eigenschaft , es funktioniert auch bei cross-domain. 🙂
Sie können auch versuchen, postMessage-API oder CORS