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 - 确定上传是不是完成