2

512kbのファイルをダウンロードして、ダウンロード時間を確認したいです。次のコードを使用しますが、Web サイトの応答時間だけをチェックし、ファイル全体がダウンロードされるまで待機しません。ファイル全体のダウンロード時間を確認するにはどうすればよいですか?

var start = new Date();  
$.ajax ({
    url: 'https://www.example.com/512kb',
    cache: false,
    success : function()
    {
        var total=(new Date() - start)  
    },
    error : function(jqxhr, status, ex) {}   
});

編集: ローカル PC で Web サイトを実行すると、Internet Explorer はすべてのファイルがダウンロードされるまで待機しますが、Firefox と Chrome は待機しません。サーバーに配置すると、すべてが同じように動作し、すべてのファイルを待機しません。ローカル側の Internet Explorer がそのように動作するのはなぜですか?

4

2 に答える 2

0

JavaScript でこれを行う方法はありません。ただし、このstackoverflowの質問でいくつかの回避策を見つけることができます:ダウンロードされたファイルがディスクに保存されたときのブラウザーイベント

編集:この他のスタックオーバーフローの質問には、より優れたより単純なアプローチである回答があります: 「ファイルのダウンロード」ポップアップが閉じられたときを検出します。

于 2013-01-09T09:13:57.063 に答える
0

total変数を何にも使用していないようです。コールバック関数内で定義されているためsuccess、その関数内にのみ存在し、関数が戻ると失われます。

次のコードは、ajax 呼び出しを完了するのに必要な時間と取得したデータの長さを示すアラート ボックスを示しています。

var start = new Date();
var total;
$.ajax ({
    url: 'http://fiddle.jshell.net/',
    cache: false,
    success : function(data)
    {
        total=(new Date() - start);
        alert('total: ' + total + ' len: ' + data.length);
    },
    error : function(jqxhr, status, ex) {}   
});

http://jsfiddle.net/WkKE2/2/

于 2013-01-09T09:08:32.107 に答える