Javascript 如何启动下载并关闭浏览器

Javascript 如何启动下载并关闭浏览器,javascript,html,Javascript,Html,我正在尝试编写一个网页,该网页将下载“myfile.docx”,然后在下载完成后自动关闭。 这是我得到的 document.startDownload.submit(); window.close(); 首先,不会阻塞,因此将立即调用窗口.close方法。我不知道有什么方法可以在文件下载完成后收到通知。其次,您只能调用窗口。在通过脚本而不是通过用户干预打开的窗口上关闭。此操作: <html> <body> <a href='myfile.docx' id='my

我正在尝试编写一个网页,该网页将下载
“myfile.docx”
,然后在下载完成后自动关闭。 这是我得到的


document.startDownload.submit();
window.close();
首先,不会阻塞,因此将立即调用
窗口.close
方法。我不知道有什么方法可以在文件下载完成后收到通知。其次,您只能调用
窗口。在通过脚本而不是通过用户干预打开的
窗口上关闭

此操作:

<html>
<body>
<a href='myfile.docx' id='myfile' name='fileToDownload'>Download</a>
<script>

document.getElementById('myfile').click();
console.log(new Date());
console.log('Dude!');
sleep(4000);//wait for the file to finish downloading
console.log(new Date());

window.close()
function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}
</script>
</body>
</html>

document.getElementById('myfile')。单击();
console.log(新日期());
console.log('Dude!');
睡眠(4000)//等待文件完成下载
console.log(新日期());
window.close()
函数睡眠(毫秒){
var start=new Date().getTime();
对于(变量i=0;i<1e7;i++){
如果((新日期().getTime()-start)>毫秒){
打破
}
}
}

将其用于边缘和镀铬
window.top.close(),但您的实现比您应该的要简单。我想下载完成时不可能关闭窗口,而是可以在下载开始时关闭窗口,但这是一种非常糟糕的做法,除非您的窗口是弹出窗口,通过调用
sleep
功能,您将冻结用户的浏览器4秒钟(在线程化浏览器中,您可以只冻结当前窗口。)
setTimeout(function(){window.close()},4000)怎么样
?此外,文件可能不会在4秒钟内完成下载,尽管这并不重要,因为如果您打开了其他窗口,浏览器将继续下载文件。如果这是唯一打开的窗口,则不太可能是使用脚本打开的,因此
window.close
不会起作用。总的来说,我不认为你知道你在做什么。