ProgressEvent

基线 广泛可用

此功能已得到良好建立,并且可在许多设备和浏览器版本上运行。自以下时间起,它已在浏览器中可用 2015年7月.

ProgressEvent 接口表示测量底层进程(如 HTTP 请求(对于 XMLHttpRequest,或 <img><audio><video><style><link> 的底层资源加载))的进度的事件。

Event ProgressEvent

构造函数

ProgressEvent()

使用给定的参数创建一个 ProgressEvent 事件。

实例属性

还继承了其父级 Event 的属性.

ProgressEvent.lengthComputable 只读

一个布尔标志,指示是否可以计算已传输或处理的数据大小 (loaded) 与数据总大小 (total) 之间的比率。换句话说,它指示进度是否可衡量。

ProgressEvent.loaded 只读

一个 64 位无符号整数,指示已传输或处理的数据大小(以字节为单位)。可以通过将 ProgressEvent.total 除以此属性的值来计算比率。在使用 HTTP 下载资源时,这仅计算 HTTP 消息的主体,不包括标头和其他开销。请注意,对于总大小未知的压缩请求,loaded 可能包含压缩数据或解压缩数据的大小,具体取决于浏览器。截至 2024 年,它在 Firefox 中包含压缩数据的大小,在 Chrome 中包含未压缩数据的大小。

ProgressEvent.total 只读

一个 64 位无符号整数,指示正在传输或处理的数据的总大小(以字节为单位)。在使用 HTTP 下载资源时,此值取自 Content-Length 响应标头。它仅计算 HTTP 消息的主体,不包括标头和其他开销。

实例方法

继承了其父级 Event 的方法。

示例

以下示例将 ProgressEvent 添加到新的 XMLHTTPRequest 并使用它来显示请求的状态。

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

规范

规范
XMLHttpRequest 标准
# interface-progressevent

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅