Mozilla为XHR添加了progress事件,这个事件会在浏览器接受新数据期间周期性的触发。onprogress 事件处理程序会接收到一个event对象,其target属性是XHR对象,但包含着三个额外的属性:
- lengthComputable:表示进度信息是否可用的布尔值
- position:已经接收的字节数
- totalSize:根据Content-Length响应头部确定的预期字节数
根据这些信息,可以创建一个进度指示器:
xhr.onprogress = function(event){
var divStatus = document.getElementById("status");
if(event.lengthComputable){
divStatus.innerHTML = "Received" + event.position + "of" + event.totalSize + "bytes";
}
}
xhr.open(...);
xhr.send(null);
为保证正常执行,必须在调用open()方法之前添加onprogress事件处理程序。