javascript - ändern - js document methods




So erhalten Sie die Referenzen aller bereits geöffneten untergeordneten Fenster (3)

Am besten benennen Sie die Fenster mit einem Präfix und einem Zähler.

Ich musste erkennen, ob ein benanntes Fenster (zB CBCheckout) bereits geöffnet war und benutzte dieses:

var signupWindow = window.open('','CBCheckout','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=1,height=1');
try {
    if (signupWindow.document.location.href == "about:blank") {
        signupWindow.close();
        signupWindow = undefined;
    }
} catch (e) { }

Dies hat den Verweis auf das genannte offene Fenster zurückerobert. Wenn es nicht existierte, würden Sie für eine Sekunde ein kleines Popup-Fenster sehen.

Wenn Sie die möglichen Namen der Fenster kennen, können Sie die Namen durchblättern und versuchen, sie zu finden.

Ich möchte die Referenzen aller bereits geöffneten Kindfenster erhalten. gibt es irgendeinen Weg? Ich benutze nicht child = window.open(....) nur mit window.open(....) und mehrere window.open(....) Fenster zu öffnen.


Ich glaube nicht, dass du es kannst, es sei denn, du kennst die Namen der Fenster, was ich vermute, dass du es nicht tust. (Wenn Sie ihre Namen kennen, können Sie window.open("", "name") , um einen Verweis darauf zu erhalten.)

Die bessere Option ist natürlich, den Verweis von window.open an erster Stelle zu erinnern - aber Sie wissen das. :-)


Wenn Sie Ihren aktuellen Code nicht ändern möchten, können Sie die Funktion window.open() einfach überschreiben:

var openedWindows = [];
window._open = window.open; // saving original function
window.open = function(url,name,params){
    openedWindows.push(window._open(url,name,params));
    // you can store names also...
}

Führen Sie diesen Code vor dem Aufruf von window.open() . Alle Verweise auf die geöffneten Fenster werden im openedWindows Array gespeichert. Sie können überall auf sie zugreifen





window.open