检测特定选项卡何时关闭
Detect When Specific Tab Closes
我有一个 .php 文件 运行 正在生成可下载文件;当 .php 文件运行时,它会在浏览器中打开一个选项卡。有时,.php 文件最多需要 15 秒,具体取决于创建文件的条件。
我想知道此选项卡何时打开生成可下载文件以及何时关闭。这样我就可以在生成文件时显示某种加载消息。当 .php 文件创建完成后,它会自动关闭选项卡。
代码:
var win = window.open(download, '_blank'); //opens the php file which generates the file.
if (win)
{
win.focus();
//have some sort of message stating to wait for the file to download here and then close it when the php file finishes running.
}
else
{
alert("Please allow popups.");
}
closePopup2();
给你的 window 一个唯一的 ID,这样脚本就会知道要检查哪一个(如果 opened/closed 多次,可能需要随机)。我不知道你是否需要关注,弹出权限是给你弄清楚的,但我认为以下应该有效:
var win = window.open(download, 'windowID', 'width:300px;height:300px');
win.document.write("<p>One moment please!</p>");
win.focus();
var test = setInterval(function() {
if(win.closed) {
clearInterval(test);
// do you stuff here after window closed
}
}, 500);
我建议不要在新选项卡中打开 PHP 文件,而是使用 XMLHttpRequest()
, you can find a guide on how to use it on MDN
你可以这样使用它:
function reqListener () {
console.log(this.responseText); // Will log full output of page
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", download);
oReq.send();
我有一个 .php 文件 运行 正在生成可下载文件;当 .php 文件运行时,它会在浏览器中打开一个选项卡。有时,.php 文件最多需要 15 秒,具体取决于创建文件的条件。
我想知道此选项卡何时打开生成可下载文件以及何时关闭。这样我就可以在生成文件时显示某种加载消息。当 .php 文件创建完成后,它会自动关闭选项卡。
代码:
var win = window.open(download, '_blank'); //opens the php file which generates the file.
if (win)
{
win.focus();
//have some sort of message stating to wait for the file to download here and then close it when the php file finishes running.
}
else
{
alert("Please allow popups.");
}
closePopup2();
给你的 window 一个唯一的 ID,这样脚本就会知道要检查哪一个(如果 opened/closed 多次,可能需要随机)。我不知道你是否需要关注,弹出权限是给你弄清楚的,但我认为以下应该有效:
var win = window.open(download, 'windowID', 'width:300px;height:300px');
win.document.write("<p>One moment please!</p>");
win.focus();
var test = setInterval(function() {
if(win.closed) {
clearInterval(test);
// do you stuff here after window closed
}
}, 500);
我建议不要在新选项卡中打开 PHP 文件,而是使用 XMLHttpRequest()
, you can find a guide on how to use it on MDN
你可以这样使用它:
function reqListener () {
console.log(this.responseText); // Will log full output of page
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", download);
oReq.send();