Frage

Ich habe ein Hauptfenster (# 1) auf meiner Webseite, von dem mir ein neues Browserfenster öffnen (# 2), von dem ich ein neues Fenster öffnen (# 3).

Nun, wenn mein Benutzer-Fenster schließt # 2 vor dem Fenster # 3, habe ich das Problem, das Fenster # 3 nicht mehr funktioniert in seinen window.opener nennen kann, da er weg ist.

Was würde Ich mag tun Fenster # 3.opener auf Fenster # 1, wenn Fenster # 2 schließt einzustellen.

Ich habe versucht, dieses i Fenster # 2 zu tun (übrigens benutze ich jquery):

var children = [];
$(window).unload( function( ) {
    $.each( children, function( p, win ) {
        if ( win ) {
            win.opener = window.opener;
            }
    } );
} );

Wenn Fenster # 3 geladen wird füge ich das Fenster zu den Array-Kinder in Fenster # 2.

Aber immer noch, wenn das Fenster # 2 vor dem Fenster # 3 verschlossen, Fenster # 3 des window.opener verweist nicht auf Fenster # 1.

Wie kann ich sicherstellen, dass meine Groß Kind Fenster (Fenster # 3), nach wie vor das Hauptfenster aufrufen (Fenster # 1) nach Fenstern # 2 geschlossen ist?

War es hilfreich?

Lösung

In der dritten wndow Sie setzen in:

<script type="text/javascript">
  var grandMother = null;
  window.onload = function(){
    grandMother = window.opener.opener;
  }
</script>

So haben Sie den Griff in die Großmutter-Fenster, und Sie können es dann für etwas verwenden, um direkt:

if(grandMother)
      grandMother.document.getElementById("myDiv").firstChild.nodeValue ="Greetings from your grandchild !-";

Andere Tipps

Sie sollten einen Verweis auf das Hauptfenster erstellen, wenn die dritte öffnet:

parent = window.opener.opener

Dies wird die zweite Fenster Schließung überleben.

window.opener wahrscheinlich ist schreibgeschützt. Ich würde Ihre eigene Setup-Eigenschaft auf die Großeltern beziehen, wenn Enkel geladen wird.

function onLoad() {
  window.grandparent = window.opener.opener;
}

Dies kann tangential, aber warum brauchen Sie 3 separate Fenster öffnen? Können Sie stattdessen einen jQuery-Dialog verwenden? Ich bekomme sehr frustriert, wenn apps öffnen Fenster auf mich.

var main_window = get_main_window();
function get_main_window(){
    var w = window;
    while(w.opener !== null){
        w = w.opener;
    }
    return w;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top