【问题标题】:How do I write content to another browser window using Javascript?如何使用 Javascript 将内容写入另一个浏览器窗口?
【发布时间】:2008-10-04 05:54:36
【问题描述】:

我用 window.open() 打开了一个新窗口,我想使用 window.open() 调用中的引用将内容写入新窗口。我尝试使用 myWindow.document.body.innerHTML = oldWindowDiv.innerHTML; 将 HTML 从旧窗口复制到新窗口。但那是行不通的。有什么想法吗?

【问题讨论】:

    标签: javascript dom


    【解决方案1】:

    window.open() 返回的引用指向子窗口的window 对象。所以你可以做任何你通常会做的事情,这里有一个例子:

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

    请记住,这仅在父窗口和子窗口具有相同域时才有效。否则跨站脚本安全限制会阻止你。

    【讨论】:

    【解决方案2】:

    我认为这可以解决问题。

       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()
    
        } 
    

    【讨论】:

      【解决方案3】:

      Vijesh 提到的表单解决方案是在窗口之间传递数据的基本思想。如果你正在寻找一些库代码,有一个很棒的 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 库来序列化 javascript 对象,以便以这种方式在窗口之间发送,而不必仅使用字符串进行通信。

      窗口消息:

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

      【讨论】:

        【解决方案4】:
        myWindow.document.writeln(documentString)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-02
          • 1970-01-01
          • 2011-11-23
          • 1970-01-01
          • 2022-07-05
          • 1970-01-01
          相关资源
          最近更新 更多