1

ファイルへのリンクがあるページがあります。リンクをクリックすると、以下のコードを使用して読み込みメッセージを表示します。

$('#TerritoriesToExcelLink').click(function() {
    $('#TerritoriesToExcelLoading').show();
    window.location.href = $(this).attr('href');
});

ファイルがダウンロードされ、ブラウザに保存ダイアログが表示されたら、メッセージを非表示にします。

起動するコードを追加しようとしましたready()が、すぐに実行されるようです(おそらく、ファイルがロードされていなくてもページが既にロードされているため)。そのため、ロードメッセージは表示されません。

ファイルが完全にダウンロードされたら、ロードメッセージを非表示にするにはどうすればよいですか?

4

3 に答える 3

3

クライアント側のコードから指定したランダム Cookie をサーバーに送信させ、ダウンロードを HTTP ヘッダーに含めます。Javascript をポーリングして、Cookie の存在を確認します。これにより、ブラウザがいつファイルを持っているかがわかります。

于 2013-02-19T09:46:35.303 に答える
2

フラッシュの使用に抵抗がなければ...

ページに非表示の Flash オブジェクトを作成し、ダウンロード リンクをクリックすると、Flash をトリガーしてファイルをダウンロードし、Flash ダウンロード完了イベントを処理し、ExternalInterface API を使用して JavaScript でイベントを発生させることができます。

于 2013-02-19T09:48:47.957 に答える
1

これは、フロント エンドの JavaScript では実行できません。ダウンロードの進行状況を取得する方法はなく、ダウンロードに関連するイベントはありません。

サーバー側の言語でも進行状況を追跡できるとは思いません。

于 2013-02-19T09:40:03.847 に答える