2016-10-22 9 views
-4

"myfile.docx"をダウンロードしてダウンロード完了時に閉じるWebページを作成しようとしています。ここ は、私は、問題がページを閉じないでダウンロードを開始してブラウザを閉じるにはどうすればいいですか

<html> 
 
    <body> 
 
     <form method='get' action='myfile.docx' name='startDownload'> 
 
     </form> 
 
     <script> 
 
     document.startDownload.submit(); 
 
     window.close(); 
 
     </script> 
 
    </body> 
 
    </html>

を得たものです。

+0

使用これを();'、しかし、あなたは –

+0

も、私はそれがクローズすることはできません推測しなければならないよりも、それは単純に実装しようとしていますウィンドウがポップアップされていない限り、ダウンロードが終了したらウィンドウを閉じることができますが、これは非常に悪いことです。 –

答えて

1

まず、the submit methodはブロックされないので、window.closeメソッドがただちに呼び出されます。私は、ファイルのダウンロードが完了したときに、通知を受け取る方法を知らない。第2に、windowでスクリプトを介して開かれたもので、ユーザーの介入ではなくを呼び出すことができます(https://stackoverflow.com/a/19768082/657401参照)。

0

これは動作します:エッジとChrome `window.top.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> 
+0

'sleep'関数を呼び出すと、ユーザのブラウザを4秒間フリーズします(threaded現在のウィンドウだけをフリーズすることができます)。どうやって 'setTimeout(function(){window.close()}、4000);'?また、他のウィンドウが開いている場合、ブラウザはファイルをダウンロードし続けるため、実際には問題ありませんが、ファイルは4秒以内にダウンロードが完了しないことがあります。これが開いている唯一のウィンドウであれば、それはスクリプトを使って開かれている可能性は低いので、 'window.close'はそのことをしません。全体的に、私はあなたが何をしているのか理解しているとは思わない。 – Witiko

関連する問題