Skip to content
Advertisement

Auto-closing a popup with a file to download

I have a file, named download.php, which contains a file to be downloaded, so it has the following headers (declared with PHP):

header("Content-Type: ".pathinfo($_GET['file'], PATHINFO_EXTENSION));
header("Content-Length: ". filesize($_GET['file']));
header("Content-Disposition: attachment; filename=". $_GET['file']);

download.php is opened as a popup with jQuery by an other page.

Now I want download.php to self-close (using JavaScript) after some seconds (so I’m secure that download started) but I didn’t manage to write working code. Here are the codes I tried (I placed them after headers):

window.setTimeout('self.close();', 3000);
window.setTimeout('function(){self.close();}', 3000);
window.setTimeout(self.close();, 3000);

I also tried simply:

self.close();

but it does not work anyway.

I tried to put these codes both in <head> and in <body>.

What could be the problem?

Advertisement

Answer

Can I ask what it says in the browser url bar in this opened window. It might be the case that the browser see’s the headers letting the browser know it is to be treated as a download and doesn’t run the window as a true page. and instead opens something like ‘about:blank’. If that’s the case the on the page javascript would never get run.

I can suggest the following however. I’m assuming this window is being opened by another page. In that case have the other page open the window programatically through javascript and control the close from there.

var popout = window.open("http://example.com/download.php");
window.setTimeout(function(){
    popout.close();
}, 1000);
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement