【问题标题】:JavaScript retrieve window handle from target=_blank submitted formJavaScript 从 target=_blank 提交的表单中检索窗口句柄
【发布时间】:2015-02-20 01:35:33
【问题描述】:

我正在尝试创建一个自动化脚本,让我可以从网站下载各种文件,然后将它们上传到新网站。该脚本将允许多个用户同时将内容从旧站点复制到新站点。

我最初尝试使用 AJAX 一次下载一个文件,并将文件数据存储在变量中,然后将此变量(文件数据)上传到第二个域。下载工作正常,但第二个域上的 PHP 页面在上传后总是返回 500 请求错误消息,尽管在 PHP 中设置了各种文件大小参数和处理时间参数。这意味着我什至看不到要调试的 PHP 页面回显的内容,并继续开发该方法。

在花了很长时间试图解决这个问题(并且失败得很惨)之后,我决定让用户正常下载旧文件,然后使用表单上传文件。由于我希望脚本在文件上传时继续运行,因此我决定将表单目标设置为“_blank”以打开一个新选项卡(用于上传文件)。

如何检索使用 target="_blank" 表单打开的窗口句柄,以测试窗口何时关闭?我不需要访问 Windows HTML,我只想检查它何时关闭。表单打开的页面与打开它的表单不在同一个域中,但第二个域 PHP 页面上的“Access-Control-Allow-Origin”标头设置为“*”。

【问题讨论】:

  • 仍在寻找答案。如果可以从 target="_blank" 表单中检索窗口句柄,那就太酷了。同时,我将简单地在第二个域上使用 MYSQL 在文件上传后更新一行。我可以通过在域 A 上使用 AJAX 反复检查是否发生这种情况。更新 SQL 行后,我将使用 JavaScript 在域 B 上自动关闭窗口。

标签: javascript php ajax forms


【解决方案1】:

我不认为您可以检索窗口句柄,但您可以使用 Javascript 保留对窗口的引用并检查窗口是否关闭。你必须像这样用Javascript打开你的窗口

var uploadWindow = window.open("http://www.google.com");

然后你可以使用定时器上的函数来监控窗口是否关闭:

var interval = 250;
setTimeout(checkClose, interval);

function checkClose() {
    if (uploadWindow.closed) {
        // Code to run when window is closed
    }
    else {
        setTimeout(checkClose, interval);
    }
}

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 2020-03-19
    • 2012-11-04
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多