我正在采购一个大型映射/小部件 javascript 文件 (1.3 MB),并希望在加载时显示一个进度条。我知道萤火虫的网络观察标签知道很多这些信息,但我想要更轻量级的东西。我遇到了这个网站:http: //blog.greweb.fr/2012/04/work-in-progress/
除了我需要获取正在下载的文件之外,这几乎可以让我到达那里。当文件下载时,我没有在 jQuery 的 getScript 上看到任何侦听器。有谁知道如何获取源文件下载的进度?
提前致谢!
我正在采购一个大型映射/小部件 javascript 文件 (1.3 MB),并希望在加载时显示一个进度条。我知道萤火虫的网络观察标签知道很多这些信息,但我想要更轻量级的东西。我遇到了这个网站:http: //blog.greweb.fr/2012/04/work-in-progress/
除了我需要获取正在下载的文件之外,这几乎可以让我到达那里。当文件下载时,我没有在 jQuery 的 getScript 上看到任何侦听器。有谁知道如何获取源文件下载的进度?
提前致谢!
如果您使用getScript()
,您可以使用成功回调执行函数,但这仅在脚本完成加载时。
我建议有一个加载指示器图像(您可以在http://ajaxload.info/找到很多)并在脚本加载时隐藏它。
这个 SO还有其他一些想法。一种解决方案如下:
var myTrigger;
var progressElem = $('#progressCounter');
$.ajax ({
type : 'GET',
dataType : 'xml',
url : 'somexmlscript.php' ,
beforeSend : function (thisXHR)
{
myTrigger = setInterval (function ()
{
if (thisXHR.readyState > 2)
{
var totalBytes = thisXHR.getResponseHeader('Content-length');
var dlBytes = thisXHR.responseText.length;
(totalBytes > 0)? progressElem.html (Math.round ((dlBytes/ totalBytes) * 100) + "%") : progressElem.html (Math.round (dlBytes /1024) + "K");
}
}, 200);
},
complete : function ()
{
clearInterval (myTrigger);
},
success : function (response)
{
// Process XML
}
});
这设置了一个间隔,通过获取加载的字节数和总字节数来计算进度。这可能对你有用。