2

我想下载一个 512 kb 的文件并检查下载时间。我使用以下代码,但它只检查网站的响应时间,而不是等到整个文件下载完毕。如何查看整个文件的下载时间?

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 上运行该网站时,Internet Explorer 正在等待所有文件下载完毕,而 Firefox 和 chrome 则没有。如果我把所有行为都放到服务器上,而不是等待所有文件。为什么只是在本地 Internet Explorer 的行为是这样的?

4

2 回答 2

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 回答
0

在javascript中没有办法做到这一点。但是您会在这个 stackoverflow 问题中找到一些解决方法:下载文件时的浏览器事件保存到磁盘

编辑:this other stackoverflow question有一个更好和更简单的方法的答案:检测“文件下载”弹出窗口何时关闭,基本上你将下载链接定位到页面中隐藏的iframe并为此iframe使用onload事件。

于 2013-01-09T09:13:57.063 回答