XMLHttpRequest 加载进度

Posted luoeeyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XMLHttpRequest 加载进度相关的知识,希望对你有一定的参考价值。

 

XMLHttpRequest 相关资料请移步这里直接查看,我这里就不在赘述:

https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest

 

------------------------------------------------本文开始------------------------------------------

前端经常会使用js 来预加载图片,通常代码也如下

img=new Image();
if(img.complete){}; //缓存
img.onload = function (){}; //加载完毕		
img.onerror= function (){}

img.src = "url";

但是在监听单张图片的进度却无能为力,而且加载其他类型的文件也非常有局限性。

 

所以:

XMLHttpRequest 几乎可以用来加载任何文件。单个文件的加载进度可以使用以下代码监听。(古董浏览器看看就好了)

var rq = new XMLHttpRequest(); 		

rq.onprogress=function(e)
{
	 if (e.lengthComputable) //进度信息是否可用
	 {
		console.log(e.loaded + " of " + e.total + " bytes");
	 }
}

 

 

 

注意:我们预加载资源当然是希望他先缓存到本地浏览器。以上代码也没有任何问题。但是如果你使用了CDN加速,那么在资源加载成功后,一定要将它作为DOM元素添加到html body中(插入再移除只要让他在HTML中出现以下就能被CDN缓存了)

 

警告: 不能在本地代码中使用. 也不应该在同步模式的请求中使用.

 

以上是关于XMLHttpRequest 加载进度的主要内容,如果未能解决你的问题,请参考以下文章

如何从 XMLHttpRequest 获取进度

进度条在 XMLHTTPRequest 中不起作用

XMLHttpRequest上传文件实现进度条

使用 XMLHttpRequest 上传大文件时的进度条

XmlHttpRequest2 进度事件和 ExtJS 3.3 Ext.Ajax

google-chrome 中的 XMLHttpRequest 未报告进度事件