项目开发中的多浏览器兼容感想

     最近在实习的公司做了一个用户注册管理系统的系统,因为这个小项目是我单独负责的,部署到公司的服务器上,出现了一些浏览器的适配问题。逼到最后,我们降低了用户管理界面的需求,让其只支持火狐和Chorme及其支持它们内核的浏览器。客户注册页面实现了支持IE,火狐,Chrome等主流浏览器。下面谈谈遇到的小坑。

   首先是发ajax请求给后台,我用的最原始的提交方式,最后实现从后台取到一段json填充表格。

function createXMLHttpRequest()
{
    var xmlHttp=false;
    if (window.ActiveXObject) {                         //在IE浏览器中创建XMLHttpRequest对象
  try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch(e) {
      try {
          xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(ee) {
    xmlHttp=false;
      }
  }
    } else if (window.XMLHttpRequest) {                //在非IE浏览器中创建XMLHttpRequest对象
  try {
      xmlHttp = new XMLHttpRequest();                      
  } catch(e) {
      xmlHttp=false;
  }
    }
    
    return xmlHttp;
}

 xmlhttp=createXMLHttpRequest();        //调用创建XMLHttpRequest对象的方法
     xmlhttp.open("post","sm");    //向服务器端发送请求
     xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
     xmlhttp.send(data);

      看来IE的确是个特殊的存在,它是所有前端开发的眼中钉,肉中刺。国内浏览器大多采用奇怪的双内核模式,如360浏览器就采用IE和Chrome双内核,好像到网银支付时自动转换到成IE内核,实在是蜜汁转换。后面还有个bootstrap datetimepicker插件不支持火狐浏览器,后面改了下插件源码:

将第112行报错处改为this.defaultTimeZone = 'GMT '+(new Date()).getTimezoneOffset()/60;

实现了日期选择插件多浏览器兼容

后面还有xmlhttp在服务器端应用send方法出现错误的现象,正在着力解决。

原文地址:https://www.cnblogs.com/shenyuelong/p/5822263.html