ProgressEvent

ProgressEvent 接口是测量如 HTTP 请求(一个XMLHttpRequest,或者一个 <img><audio><video><style> 或 <link> 等底层资源的加载)等底层流程进度的事件。

构造方法

ProgressEvent() (en-US)
用给定的参数创建一个 ProgressEvent 事件。

属性

同时继承它的父元素 Event 的属性。

ProgressEvent.lengthComputable 只读
是一个 Boolean (en-US) 标志,表示底层流程将需要完成的总工作量和已经完成的工作量是否可以计算。换句话说,它告诉我们进度是否可以被测量。
ProgressEvent.loaded (en-US) 只读
是一个 unsigned long long 类型数据,表示底层流程已经执行的工作总量。可以用这个属性和 ProgressEvent.total 计算工作完成比例。当使用 HTTP 下载资源,它只表示内容本身的部分,不包括首部和其它开销。
ProgressEvent.total (en-US) 只读
是一个 unsigned long long 类型数据,表示正在执行的底层流程的工作总量。当使用 HTTP 下载资源,它只表示内容本身的部分,不包括首部和其它开销。

方法

同时继承它的父元素 Event 的方法。

ProgressEvent.initProgressEvent() (en-US) This deprecated API should no longer be used, but will probably still work. This API has not been standardized.
使用被弃用的 Document.createEvent("ProgressEvent") 方法,来初始化一个已经创建好的 ProgressEvent

示例

下面的示例为一个新建的 XMLHTTPRequest 添加了一个 ProgressEvent,并使用它来显示请求状态。

var progressBar = document.getElementById("p"),
    client = new XMLHttpRequest()
client.open("GET", "magical-unicorns")
client.onprogress = function(pe) {
  if(pe.lengthComputable) {
    progressBar.max = pe.total
    progressBar.value = pe.loaded
  }
}
client.onloadend = function(pe) {
  progressBar.value = pe.loaded
}
client.send()

规范

规范 状态 注解
XMLHttpRequest
ProgressEvent
Living Standard

浏览器兼容性

BCD tables only load in the browser

相关链接

  • The Event base interface.