如何将数据从新窗口传递到父窗口

Posted

技术标签:

【中文标题】如何将数据从新窗口传递到父窗口【英文标题】:How to pass data from a new window to the parent window 【发布时间】:2019-01-31 11:18:28 【问题描述】:

我想将数据从子窗口传递到父窗口。

问题是子窗口打开但用户输入的值没有传给父窗口

parent.html

<form action="" method="post" name="f1">
    <table border="0" cellpadding="0" cellspacing="0" >
        <tr>
            <td>
                <font face="Verdana" size="2">
                    Your Name
                </font>
                <input name="p_name" size="8" type="text">
                    <a href="javascript:void(0);" name="My Window Name" onclick='window.open("child.html","Ratting", "width=550,height=170,left=150,top=200,toolbar=1,status=1,");' title=" My title here ">
                        Click here to open the child window
                    </a>
                </input>
            </td>
        </tr>
    </table>
</form>

child.html

<html>
    <head>
        <script langauge="javascript">
            function post_value()  
                opener.document.f1.p_name.value = document.frm.c_name.value;
                self.close();
            
        </script>
        <title>
            (Type a title for your page here)
        </title>
    </head>
    <body>
        <form action="" method="post" name="frm">
            <table border="0" cellpadding="0" cellspacing="0" >
                <tr>
                    <td align="center">
                        Your name
                        <input name="c_name" size="12" type="text" value="test">
                            <input onclick="post_value();" type="button" value="Submit">
                            </input>
                        </input>
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>

如何将数据从子窗口传递到父窗口?

【问题讨论】:

这似乎对我有用。我用你的代码创建了一个plnkr.co/edit/ves7Xm7sDP3CQAczeMjr。什么对你有不同的作用? @mehtankush 在 chrome 和 opera 等网络浏览器中不起作用,但在 IE 中它可以工作。你知道一些问题吗?为什么 chrome 和 opera 不起作用? @derisumargo 它可以在 chrome 中找到。 【参考方案1】:

您可以打开一个充当对话框的新窗口,并将信息传递回主窗口。 但是,这受到同​​源策略的限制,因此您需要确保两个文件都来自同一个源。

Refer this SO answer for a detailed explanation on same-origin policy


问题

在本地机器上运行时(从您的文件系统),浏览器在控制台中给出Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame 错误,因为它无法确认origin

分辨率

从一个网络服务器提供这两个文件


想要在本地调试?

您可以使用简单的 python 服务器在任何目录中运行 Web 服务器。以下步骤:

    导航到目录:cd /path/to/directory 启动python网络服务器:python -m SimpleHTTPServer 浏览至localhost:8000

希望对你有帮助!

【讨论】:

以上是关于如何将数据从新窗口传递到父窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何将行值从 iframe 弹出窗口传递到父页面文本框

layui中从子窗口传递数据到父窗口,第三个子弹层的值传给第二个弹层

showModalDialog/showModelessDialog实例,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口.关闭刷新父窗口

如何在 Qt 中将消息从子窗口小部件发送到父窗口?

window.open()打开一个子窗口,怎么实现在子窗口选择数据,然后提交把数据加到父窗口。

visual c++ 中 怎样把子窗口传值到父窗口?