我用window.open()打开了一个新窗口,我想使用window.open()调用中的引用然后将内容写入新窗口。我已经尝试使用myWindow.document.body.innerHTML = oldWindowDiv.innerHTML将HTML从旧窗口复制到新窗口;但那不起作用。有什么想法吗?
答案 0 :(得分:11)
window.open()
返回的引用是子窗口的window
对象。所以你可以做任何你通常会做的事情,这是一个例子:
var myWindow = window.open('...')
myWindow.document.getElementById('foo').style.backgroundColor = 'red'
请记住,只有父窗口和子窗口具有相同的域时才会有效。否则,跨站点脚本安全限制将阻止您。
答案 1 :(得分:7)
我认为这样可以解决问题。
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()
}
答案 2 :(得分:0)
myWindow.document.writeln(documentString)
答案 3 :(得分:0)
Vijesh提到的表单解决方案是在Windows之间传递数据的基本思想。如果你正在寻找一些库代码,那么就有一个很棒的jQuery插件:WindowMsg(由于奇怪的Stack Overflow自动链接错误,请参见底部的链接)。
正如我在此处的回答中所述:How can I implement the pop out functionality of chat windows in GMail? WindowMsg在每个窗口中使用一个表单,然后使用window.document.form ['foo']哈希进行通信。正如Dan在上面提到的那样,只有当窗口共享一个域时,这才有效。
另外在另一个帖子中提到,你可以使用JSON.org的JSON 2 lib来序列化javascript对象,以便以这种方式在窗口之间发送,而不必仅使用字符串进行通信。
WindowMsg:
http://www.sfpeter.com/2008/03/13/communication-between-browser-windows-with-jquery-my-new-plugin/