it-swarm.com.de

Popup-Fenster für den Zugriff auf übergeordnete Dom

Ich habe ein Popup-Fenster, das auf die übergeordnete Domäne zugreifen muss, um eine Druckseite zu erstellen. Die Struktur der Druckseite unterscheidet sich erheblich von der Struktur der übergeordneten Seite, sodass ein Druck-CSS das Problem nicht lösen kann. Ich möchte im Grunde ein Fenster aufklappen und dann haben, dass das Fenster einige Daten von den übergeordneten Elementen abruft, um sogar auf den Dom aus dem Popup zuzugreifen und die Druckseite zu generieren, ohne erneut zum Server gehen zu müssen. Irgendwelche Ideen, wie ich das erreichen kann?

Ich benutze den Standard

window.open()

ein Fenster öffnen. Ich brauche diese Lösung, um kein Hack zu sein und Browser-kompatibel mit allen gängigen Browsern zu sein.

Danke im Voraus!

17
Scoota P

Sajjans Antwort ist ein Anfang, aber stellen Sie sicher, dass Ihre Objekte verfügbar sind, bevor Sie versuchen, auf sie zuzugreifen:

var opener = window.opener;
if(opener) {
    var oDom = opener.document;
    var elem = oDom.getElementById("your element");
    if (elem) {
        var val = elem.value;
    }
}

Andernfalls riskieren Sie, dass der Öffner nicht auf Ihren ersten Anruf reagiert und Sie das Element nicht abrufen können.

Als jQuery denke ich (basierend auf einer Antwort hier: wie kann ich mit jquery auf das übergeordnete Fensterobjekt zugreifen? ):

var opener = window.opener;
if(opener) {
    var elem = opener.$("#elementId");
    if (elem) {
        var val = elem.val(); // I forgot we're dealing with a jQuery obj at this point
    }
}
24

window.opener.document.getElementById ("Ihr Element"). Wert 

4
Sajjan Sarkar

Gemäß MDN gibt window.open() einen Handle an das neue Fenster zurück.

var popUpHandle = window.open();

Mit diesem Griff sollten Sie auf das DOM des PopUp zugreifen können. Mit dem bereits erwähnten window.opener ist es umgekehrt möglich. Beziehen Sie sich erneut auf MDN :

var originalWindow = window.opener;

Ihre bevorzugte Suchmaschine liefert Ihnen jedoch weitere Details, da dieses Thema ziemlich alt ist und Ihr Ansatz bereits millionenfach oder mehrmals durchgeführt wurde.

0
cimnine

parent.document hat in meinem Fall geholfen.

var elem = parent.document.getElementById("overlay_modal");
if (elem) {
alert('setting attribute');
elem.setAttribute("onclick", "Windows.close('2', event);");
}
0
subho