IE8+中XMLHttpRequest支持timeout属性及ontimeout事件

5/3/2011来源:ASP.NET技巧人气:8218

不久前我写了一个Ajax工具库。这篇是对请求超时处理的补充。IE8/9的xmlHttPRequest对象已经增加这方面的支持了。IE10 pre1测试也支持。如果W3C能将这两个东东标准化多好啊,不用那么的hack方式实现了。

xmlhttpRequest的timeout属性可以设置,表示在等待响应多少毫秒之后终止。
即如果在规定的时间内浏览器没有收到响应,那么就触发timeout事件,给xhr.ontimeout赋值为一个响应函数后可被执行。


主要代码如下

01 xhr.onreadystatechange = function(){
02     if(xhr.readyState == 4){
03         try{
04             var s = xhr.status;
05             if(s>= 200 && s < 300){
06                 //success(xhr);
07             }else{
08                 //failure(xhr);
09             }                       
10         }catch(e){}
11     }else{}
12 };
13 xhr.open();
14 xhr.timeout = 1000;
15 xhr.ontimeout = function(){
16     alert('request timeout');
17 }

超时后再访问xhr的status属性会出异常,因此加上try catch。