JavaScript获取target=_blank提交表单后的窗口句柄

3
我正在尝试创建一种自动化脚本,让我从一个网站下载各种文件,然后将它们上传到新网站。该脚本将允许多个用户同时将内容从旧站点复制到新站点。
我最初尝试使用AJAX逐个下载文件,并将文件数据存储在变量中,然后将此变量(文件数据)上传到第二个域。下载工作正常,但是第二个域上的PHP页面始终在上传后抛出500请求错误消息,尽管在PHP中设置了各种文件大小参数和处理时间参数。这意味着我甚至无法看到PHP页面回显以进行调试,并继续开发该方法。
在尝试修复这个问题很长时间后(并且失败惨败),我决定让用户正常下载旧文件,然后使用表单上传文件。因为我希望脚本在文件上传时继续运行,所以我决定将表单的目标设置为“_blank”以打开一个新选项卡(上传文件)。
如何检索打开target="_blank"表单的窗口句柄,以测试窗口何时关闭?我不需要访问窗口的HTML,我只想检查它何时关闭。由表单打开的页面不在打开它的表单相同的域上,但第二个域的PHP页面已设置“Access-Control-Allow-Origin”头为“*”。

https://www.ibm.com/developerworks/community/blogs/hazem/entry/accessing_parent_window_elements_from_child_window_in_javascript5?lang=en - Radu Andrei
仍在寻找答案。如果能够从target="_blank"表单中检索窗口句柄,那将是很酷的事情。同时,我将简单地在第二个域上使用MYSQL,在文件上传后更新一行。我可以使用域A上的AJAX重复检查是否发生了这种情况。在更新SQL行后,我将使用JavaScript自动关闭域B上的窗口。 - Daniel Price
1个回答

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

我希望这能有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接