XMLHttpRequest Level 2 事件:等价于 readyState

Posted

技术标签:

【中文标题】XMLHttpRequest Level 2 事件:等价于 readyState【英文标题】:XMLHttpRequest Level 2 events: equivlents to readyState 【发布时间】:2017-01-25 07:24:37 【问题描述】:

XMLHttpRequest Level 2 在onreadystatechange 的基础上增加了一些更有意义的事件。

其中一些事件与readyState 值之间是否存在对应关系?

据我所知:

1   loadstart
2   progress
3   ?
4   loadend; load

我还没有算出3的等价物,反正有点模糊。

【问题讨论】:

根据this进度是readystate 3 你看规范了吗? w3.org/TR/XMLHttpRequest2/#the-responsetype-attribute 开玩笑的是,它什么都没有...... :) 这指向你 xhr.spec.whatwg.org 【参考方案1】:

这是我使用以下代码观察到的:

var oReq = new XMLHttpRequest();

oReq.addEventListener("progress", ev);
oReq.addEventListener("load", ev);
oReq.addEventListener("loadstart", ev);
oReq.addEventListener("loadend", ev);
oReq.addEventListener("readystatechange", ev);


oReq.open('GET', '/blah');

function ev(e) 
    console.log(e.type, oReq.readyState);

oReq.send();

输出结果

readystatechange 1
loadstart 1
readystatechange 2
readystatechange 3
progress 3
readystatechange 4
load 4
loadend 4

好像是这样

    加载开始 ??? - 没有等价物 - (即收到的标头) 进展 加载/加载结束

【讨论】:

看来progress 可能取决于浏览器。 Safari 将其报告为状态 2,而 Chrome 和 Firefox 将其报告为 3。 Safari 正在成为新的 Internet Explorer :p

以上是关于XMLHttpRequest Level 2 事件:等价于 readyState的主要内容,如果未能解决你的问题,请参考以下文章

XMLHttpRequest Level 2 使用指南

XMLHttpRequest Level 2 - 确定上传是不是完成

AJAX - onreadystatechange 事件(XMLHttpRequest对象的属性)

ajax基础入门

XMLHttpRequest 进度事件总数 = 0

Ajax-onreadystatechange事件