ファイルダウンロードの終了をブラウザ側で検知したい

やり方

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の値が変わったらダウンロード終了。