【问题标题】:How to get data from JS popup window when window is closing关闭窗口时如何从JS弹出窗口获取数据
【发布时间】:2014-06-09 13:09:57
【问题描述】:

当窗口关闭时,我试图捕捉弹出窗口中的表单字段何时存在。我目前无法控制子窗口,但它与父窗口在同一个域中。

我已经研究过使用计时器功能:

var child = window.open(...);
var timer = setInterval(checkChild, 500);

function checkChild() {
    if (child.closed) {
        <DO SOMETHING HERE>
        clearInterval(timer);
    }
}

但这对我不起作用,因为我认为这不会让我访问孩子的数据。

我的弹出窗口有几个表单字段用于上传用户的个人资料图片。我的问题是我将如何访问用户是否提交了表单或只是关闭了窗口?提交按钮的弹出窗口中有 javascript 将处理实际上传图像,但是当他们单击“上传”按钮时我需要以某种方式捕获,并且能够看到用户实际上有要上传的图像。

提前致谢!

编辑:
我继续前进,只是查看了关闭的窗口事件。我实际上无法从那里获取任何数据,但我能够从服务器端代码上的数据库中进一步读取以获取我需要的数据。

【问题讨论】:

    标签: javascript jquery html ajax windows


    【解决方案1】:

    您可以使用child.onbeforeunload 事件在子窗口关闭之前从其获取信息。

    正如https://stackoverflow.com/a/15769556/1600851建议的那样

    【讨论】:

    • 我可以通过这种方法访问弹出窗口中的表单元素吗?所以喜欢....child.getElementById('SomeTextField') 来返回 'SomeTextField' 的内容?
    • 这样做也不会产生跨域错误吗? POC:在 chrome 中打开一个弹出窗口,打开控制台...child.onDocumentUnload(function (event) {alert("Window closing");}); 结果:SecurityError: Blocked a frame with origin "..." from accessing a cross-origin frame.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多