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


         最近在实习的公司做了一个用户注册管理系统的系统,因为这个小项目是我单独负责的,部署到公司的服务器上,出现了一些浏览器的适配问题。逼到最后,我们降低了用户管理界面的需求,让其只支持火狐和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方法出现错误的现象,正在着力解决。

  • 相关阅读:
    Scala 插入排序
    win10下安装使用mysql-8.0.18
    Autofac注入多数据库(DbContext)
    缓存一致性问题以及方案(一) Redis
    Java编程中,一些好的习惯从一开始就值得坚持
    IDEA项目无法引用本地Class类,引用路径正确但报错标红
    git怎么撤销已经push到远端的commit?
    git的命令大全及如何修改git账号和提交的邮箱和用户名
    renren-fast-vue无法运行相关问题解决办法n ./src/assets/scss/index.scss Module build failed: Error: ENOENT: no su
    VsCode系列(一):下载安装及汉化
  • 原文地址:https://www.cnblogs.com/shenyuelong/p/5822263.html
Copyright © 2020-2023  润新知