IE浏览器的兼容性问题

现在的PC端开发,IE需要考虑就只剩下 IE9/10/11。其他版本的IE基本已经没有使用了,客户方的开发也基本剩下这3个版本IE的兼容考虑了。

win7自带的是 IE8 浏览器,所以 IE8 浏览器,有可能会碰到有要求的客户,不过也好沟通。 实在不行,就页面降级,也比兼容IE8以下的好。

浏览器兼容性测试可以使用 use i can : https://caniuse.com/

一、CSS 的兼容性问题。【标签的兼容,不用考虑很好解决】

  ie9/10/11对css的属性都是 部分支持。ie11已经大部分支持了,还是有一些常用属性不支持的。

  1. 渐变色:ie9/10/11 好像都不支持,有待验证。
  2. select下拉默认样式清除:
  3. flex布局:flex布局在IE10和IE11中使用具有 '时效性' , 在标签是行内标签的时候justify-content的效果是不生效的。
  4. video标签的尺寸:ie9虽然支持video标签,但不是很完美,屏幕宽度很小
  • CSS 兼容性的解决方案:

  1、IE条件注释法: IE10+ 已经不再支持 条件注释。

    a、IE 识别的注释:

    <!--[if IE]> 
          所有的IE可识别 
    <![endif]-->     

    b、非IE 识别的注释:

    <!--[if !IE]><!-->
              除IE外都可识别 
    <!--<![endif]-->    

  2、CSS 属性  前缀法:

    a、

  3、CSS 属性值 后缀发:

    \0:IE8/9/10 【IE11无效】

    \9:

  4、选择器 前缀法:

    -ms-:【IE10好像无效,待验证】

  5、 媒体查询法:【亲测有效,在ie10/11上】  参考:https://blog.csdn.net/jsyxiaoba/article/details/100765815

  @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
    .aaa{padding: 0 6px;}
  }

   css修改小的话,推荐这种处理,现在的IE兼容性问题,主要考虑IE11/10/9,其他的版本就不用考虑了。这种方法不能兼容IE9,就加一个 \0或\9解决就可以了。

二、es5 的兼容性问题。【IE浏览器都不支持 es6+ 的语法】

   IE9/IE10/IE11  对 es6+ 的语法都是不支持的,开发环境没有使用编译工具(webpack 或 gulp)的,必要使用es5 以下的语法。【编译器无法降级的,再考虑】

   PC页面的开发,一定要考虑IE的兼容性问题,最少都要考虑IE10/11,不然最后一定是在填坑的过程。(说多了,都是心酸泪)

  • es5 有兼容性的 API:

  1、FormData:IE9 不用使用,IE10/IE11 有待验证。

  2、

  • es5 兼容性 解决方案:【大体是,不能用的API就不使用,使用支持的语法实现,相应的功能】

  1、ie 浏览器文件上传 :https://www.cnblogs.com/ylxmt/p/10132621.html

    IE9及以下浏览器,js中是 不支持 FormData对象的。所以文件上传只能使用 from 表单控件上传。

    from表单上传文件是有缺陷的:

      1、from 表单提交不支持headers上传参数,无法在headers 上加tooken字段。

      2、form 表单提交,一般的服务器处理方式是重定向。无法像ajax回调那样,拿到返回值。

        a、如果服务器返回的是json,并不能拿到服务器返回的数据,而是直接提示下载或打开。

        

            之所以ie9下提示打开或者保持,是因为:
              ie无法解析回调里的json数据,就是说如果服务器返回json数据,ie会把它当做文件来处理,显示打开或保存。 

        b、ie9可以解析的是 text/html 或者 text/plain 类型的数据,所以后端返回的时候自定义contype-type为"text/html"或者"text/plain"。

三、第三方插件 解决 兼容性问题

四、第三方库对 IE 的支持情况

  • jQuery2.0版本以上的不在支持ie6、7、8;

五、总结 PC 端页面,在 兼容性问题上的开发流程

  1、基于 现代浏览器(如Chrome)先开发好页面。

  2、创建一个单独解决 IE9以下 兼容性问题的 css文件,通过 IE条件注释法,引入这个css文件。【这里解决不了 IE11 的css问题】

    <!--[if lt IE 9]>
        <link rel="stylesheet" href="./css/lte-ie9.css">
    <![endif]-->

  3、通过媒体查询法,解决 IE10/IE11 的兼容性问题。这两个版本对 CSS3 已经有很大部分支持了。

  4、创建一个单独解决 IE10以下 兼容性问题的 JS文件,把不支持 es5的 API,在这个文件 手动创建声明。使得程序可以调用 这些 es5 的方法。

  5、如果有现成第三方 封装好的,解决兼容性的 CSS 或 JS直接引入就可以了。要注意 使用IE条件注释法引入 或 其他 只在 IE 引入的方法。

posted @ 2018-04-08 22:45  吴飞ff  阅读(206)  评论(0编辑  收藏  举报