日期:2014-05-16  浏览次数:20804 次

Jquery1.3的在ie6下ajax缺陷
这段时间公司开始更换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中的写法



 xhr:function()
 {
        return window.activexobject ? new activexobject("microsoft.xmlhttp") : new xmlhttprequest();
 }

 






直接崩溃掉,从上篇文章中了解到,microsoft.xmlhttp为ie下最早的一个xmlhttp版本,看来jquery的开发者也有意的将ie6系列的浏览器抛弃

ie7 已经开始支持xmlhttprequest.

最后将这段代码改写成如下模样

  var orequest;
   if(typeof xmlhttprequest=="undefined" && window.activexobject)
      {
         var arrsignatures = ["msxml2.xmlhttp.5.0","msxml2.xmlhttp.4.0","msxml2.xmlhttp.3.0","msxml2.xmlhttp","microsoft.xmlhttp"];
          for(var i=0;i<arrsignatures.length;i++)
          {
              try
              {
                 orequest = new activexobject(arrsignatures[i]);
               return orequest;
              }
              catch(oerror)
              {
              }
             }
     }
  else
     orequest=new xmlhttprequest();
  return orequest