是否有可能有一个衡量jQuery.get()进度的进度条?
解决方法
这在当前版本的jQuery中并不是开箱即用的,但仍然可以轻松完成.
您应该监听jQuery允许您访问的XMLHttpRequest的progress事件.一个例子from Dave Bond’s blog:
$.ajax( { type: 'POST',// 'POST' here so that _upload_ progress _also_ makes sense; // Change to 'GET' if you need. url: "/",data: {},beforeSend: function(XMLHttpRequest) { //Upload progress XMLHttpRequest.upload.addEventListener("progress",function(evt){ if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; //Do something with upload progress } },false); //Download progress XMLHttpRequest.addEventListener("progress",function(evt){ if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; //Do something with download progress } },false); },success: function(data){ // successful completion handler } });
这里链接到docs on XMLHttpRequest
‘s progress
event.
您可能还想看看jquery.ajax-progress plugin以避免自己动手.
笔记:
>某些旧版浏览器可能不支持progress事件.>要计算下载进度,您必须知道要下载的资源的大小,即服务器必须发送Content-length HTTP标头.如果未知大小,则无法计算进度.这就是progress事件的lengthComputable属性.