JavaScript兼容性

boume 发布于 12-13 18:04 浏览:77 类型:原创 - 随笔 分类:JavaScript - javascript学习 作者原创 版权保护

常见的JavaScript兼容性及解决方案整理:
1.选择器兼容性
  getElementsByClassName  ( IE9以及以上支持)
  querySelector/querySelectorAll (IE8以及以上支持)

2.获取计算后的样式
  getComputedStyle (IE9以及以上支持)
  currentStyle(所有IE都支持,它是一个属性)
  兼容方法:封装函数

function ajax(json){
      var settings={
      url:'',
      method:'get',
      data:{},
      dataType:'json',
      succ:function(){},
      fail:function(){}
  };

  //用户传的参数覆盖默认参数
  for(var attr in json){
      settings[attr]=json[attr];
  }

  //把数据拼成正确的格式
  var arr=[];
  for(var attr in settings.data){
      arr.push(attr+'='+settings.data[attr]);
  }
  settings.data=arr.join('&');

  //声明一个ajax对象
  var ajax=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');

  //设置请求方式
  if(settings.method.toLocaleLowerCase()==='get'){
      ajax.open(settings.method,settings.url+'?'+settings.data+'&'+new Date().getTime(),true);
      ajax.send();
      }else{
      ajax.open(settings.method,settings.url,true);
      ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      ajax.send(settings.data);
  }

  //设置完成事件的兼容性
  if(typeof ajax.onload==='undefined'){
      ajax.onreadystatechange=ready;
  }else{
      ajax.onload=ready;
  }

  function ready(){
      if(ajax.readyState==4){
          if(ajax.status==200){
          switch(settings.dataType.toLocaleLowerCase()){
          case 'string':
          settings.succ(ajax.responseText);
          break;
        
          case 'json':
          settings.succ(JSON.parse(ajax.responseText));
          break;
        
          case 'xml':
          settings.succ(ajax.responseXML);
          }
          }else{
          settings.fail(ajax.status);
          }
      }
   };
}

 

z
给个赞 9 人点赞
收藏 1 人收藏
boume 作者

sss

作者最新