ファイルダウンロードの終了をブラウザ側で検知したい
やり方
Cookieを使う。
$('form').on('submit', function() { const currentToken = getCookie("DOWNLOAD_TOKEN"); const downloadTimer = window.setInterval(function () { const newToken = getCookie("DOWNLOAD_TOKEN"); if (newToken != currentToken) { alert('ダウンロード終了!'); window.clearInterval(downloadTimer); } }, 1000 ); }); // クッキー取得 function getCookie( name ) { var parts = document.cookie.split(name + "="); if (parts.length >= 2) return parts.pop().split(";").shift(); }
解説
サーバー側はDOWNLOAD_TOKEN
という名前で毎回ランダムな値をクッキーにセットする。クライアントはsubmit前にDOWNLOAD_TOKEN
の値を取得、submit後は1秒ごとにクッキーを監視する。DOWNLOAD_TOKEN
の値が変わったらダウンロード終了。