2008-10-04 12 views
11

Ich habe ein neues Fenster mit window.open() geöffnet und möchte den Verweis aus dem Aufruf von window.open() verwenden, um Inhalt in das neue Fenster zu schreiben. Ich habe versucht, HTML aus dem alten Fenster in das neue Fenster zu kopieren, indem ich myWindow.document.body.innerHTML = oldWindowDiv.innerHTML; aber das geht nicht. Irgendwelche Ideen?Wie schreibe ich Inhalt in ein anderes Browserfenster mit Javascript?

Antwort

10

Der Verweis von window.open() zurückgegeben wird, ist auf das window Objekt des Kindes Fensters. So können Sie alles tun, würden Sie normalerweise tun, hier ist ein Beispiel:

var myWindow = window.open('...') 
myWindow.document.getElementById('foo').style.backgroundColor = 'red' 

Beachten Sie, dass dies nur funktioniert, wenn die Eltern-Kind-Fenster die gleiche Domain haben. Andernfalls werden Sie durch die Sicherheitsbeschränkungen für Cross-Site-Scripting gestoppt.

+0

Es ist eigentlich die gleiche Herkunft Politik (http://www.w3.org/html/wg/html5/#same-origin), die im Grunde bedeutet, dass Sie einen Zugriff auf sein müssen Seite auf der gleichen Domain, auf dem gleichen Port und mit dem gleichen Protokoll (zB https://example.com kann nicht auf http://example.com, https://example.com:8080, etc.) schreiben – olliej

+0

Schön, das ist gut zu wissen. –

0
myWindow.document.writeln(documentString) 
5

Ich denke, das wird den Trick tun.

function popUp(){ 

    var newWindow = window.open("","Test","width=300,height=300,scrollbars=1,resizable=1") 

    //read text from textbox placed in parent window 
    var text = document.form.input.value 

    var html = "<html><head></head><body>Hello, <b>"+ text +"</b>." 
    html += "How are you today?</body></html>" 


    newWindow .document.open() 
    newWindow .document.write(html) 
    newWindow .document.close() 

    } 
0

Die Formularlösung, die Vijesh erwähnt, ist die Grundidee hinter der Datenübertragung zwischen Fenstern. Wenn Sie nach etwas Bibliothekscode suchen, gibt es ein großes jQuery-Plugin für genau das: WindowMsg (siehe Link unten wegen des seltsamen Stack Overflow-Bugs zur automatischen Verknüpfung).

Wie ich in meiner Antwort hier beschrieben: How can I implement the pop out functionality of chat windows in GMail? WindowMsg verwendet ein Formular in jedem Fenster und dann den window.document.form ['foo'] Hash für die Kommunikation. Wie Dan oben erwähnt, funktioniert das nur, wenn die Fenster eine Domäne teilen.

Auch wie im anderen Thread erwähnt, können Sie die JSON 2-Bibliothek von JSON.org verwenden, um JavaScript-Objekte zum Senden zwischen Fenstern auf diese Weise zu serialisieren, anstatt nur mit Strings kommunizieren zu müssen.

WindowMsg:

http://www.sfpeter.com/2008/03/13/communication-between-browser-windows-with-jquery-my-new-plugin/

Verwandte Themen