49 javascript ajax xmlhttprequest
我只需要支持主流的现代浏览器(IE10 +,FF,Chrome,Safari)
我可以进行此替换,因为我想简化我的代码库:
从:
xhr.onreadystatechange = function () {
if (this.readyState === 4) {
if (this.status === 200) {
o.callback(xhr.responseText);
} else {
return false;
}
} else {
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
至:
xhr.onload = function (test) {
o.callback(xhr.responseText);
};
Run Code Online (Sandbox Code Playgroud)
我不认为MDN文档在这方面是明确的.
澄清:
我选择不使用框架.
mr.*_*Voo 18
也许你看看这个,看看W3C:XMLHttpRequest,如果你的浏览器支持xhr.onload,它就是一样的.需要XMLHttpRequest 2)
如果不存在,你也可以编写一个模拟xhr.onload的包装函数.(我认为你需要覆盖XMLHttpRequest.prototype.onload = function(args){//calling onreadystatechanges somehow}
).如果您只支持使用xhr.onload的现代浏览器应该可用 - 最好的解决方案是使用框架(如jquery或mootools为其提供包装功能).
Ger*_*ens 14
在MDN文档中,他们声明了以下内容
活动
所有浏览器都支持onreadystatechange作为xhr对象的属性.
从那时起,在各种浏览器中实现了许多额外的事件处理程序(onload,onerror,onprogress等).这些在Firefox中受支持.特别是,请参见nsIXMLHttpRequestEventTarget和Using XMLHttpRequest.
除了将*属性设置为处理函数之外,更新的浏览器(包括Firefox)还支持通过标准的addEventListener API监听XMLHttpRequest事件.
所以我认为你可以假设onreadystatechange是要走的路,而onload是一个可以在浏览器支持时使用的附加功能.@ mr.VVoo答案是正确的,在有疑问时坚持w3c.
归档时间: |
|
查看次数: |
28047 次 |
最近记录: |