JQuery Ajax的导致IE6崩溃
这段时间公司开始更换OS,从Windows 2000变成Ubuntu,我们的网站也跟着修改,css就到处找hack,javascript就去找jquery, 测试发现jquery的ajax请求直接造成部分ie6崩溃,只要是IE6,无论是什么操作系统,一个都没有逃掉,如果是只有自己写的Ajax请求还无所谓了,但是那么多的jquery ajax插件不能用,实在是痛苦,开始找是否是IE6的问题,看了Ajax:请使用最新版本的XMLHTTP,了解到IE6在不同的OS可能使用不同的xmlhttprequest,如是乎到windows 2000下找,发现是MSXML2.XMLHTTP.4.0,windows 2003下,发现是MSXML2.XMLHTTP.5.0,接着去找jquery.js中的写法
1 xhr:function()
2 {
3 return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
4 }
5
2 {
3 return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
4 }
5
直接崩溃掉,从上篇文章中了解到,Microsoft.XMLHTTP为IE下最早的一个XMLHTTP版本,看来jquery的开发者也有意的将ie6系列的浏览器抛弃
IE7 已经开始支持XMLHttpRequest.
最后将这段代码改写成如下模样
1 var oRequest;
2 if(typeof XMLHttpRequest=="undefined" && window.ActiveXObject)
3 {
4 var arrSignatures = ["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
5 for(var i=0;i<arrSignatures.length;i++)
6 {
7 try
8 {
9 oRequest = new ActiveXObject(arrSignatures[i]);
10 return oRequest;
11 }
12 catch(oError)
13 {
14 }
15 }
16 }
17 else
18 oRequest=new XMLHttpRequest();
19 return oRequest
20
2 if(typeof XMLHttpRequest=="undefined" && window.ActiveXObject)
3 {
4 var arrSignatures = ["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
5 for(var i=0;i<arrSignatures.length;i++)
6 {
7 try
8 {
9 oRequest = new ActiveXObject(arrSignatures[i]);
10 return oRequest;
11 }
12 catch(oError)
13 {
14 }
15 }
16 }
17 else
18 oRequest=new XMLHttpRequest();
19 return oRequest
20
压缩,上传.世界一片清静.