IE的JS兼容性问题

    在与产品撕扯之后,确定了我们的系统,只支持IE9+,而且控制台系统,只支持IE11。
    但就算这样,IE照样爆出bug来。

1、ajax强制304

    例子:请求了一个列表——添加一条数据——再请求这个列表——数目不添加
    打开IE的开发工具查看,数据又正常了,使用抓包工具查看,原来IE会把之前请求过的ajax地址,都当做304给处理,直接拿的缓存,没走实际的后台接口。
    解决方案:ajax请求加时间戳、或加随机数、或jquery ajaxcache设置为false

2、汉字乱码

    例子:搜索接口,输入汉字后检索,检索不出结果
    抓包查看,汉字乱掉了
    解决方案:ajax将检索的关键字编码,使用encodeURIComponent都行

3、表格出不来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table class="table-style-01">
<colgroup><!--如果不写colgroup的话,会挂掉-->
<col width="25%" />
……
</colgroup>
<thead>
<tr>
<th>分类</th>
……
</tr>
</thead>
<tbody>
<tr>
……

    如上代码,如果不写colgroup的话,先进的浏览器,会把col标签,默认使用colgroup包起来,界面还会正常显示。
    但是IE,会自作主张的用colgroup标签,将下面的直到tbody标签里面的内容都包起来,然后显示不了表格
    解决方案:写html要符合w3c标准,不能随意简写。

4、icheck点击两次才好使的bug

    icheck是jquery的一个优化单选、多选框的插件,在IE下,选中需要点击两下
    直接使用别的css方案,替换掉icheck,完全是让人上火的鸡肋插件

5、在默认设置下,cookie失效

    某天QA报了一个bug,IE登录不了,其余的浏览器OK,后台看了日志,说没有cookie
    检查了前后端代码,都没问题,忽然想起,是不是被IE禁用了cookie了。
    IE的默认安全设置,是中级,即只信任本网站的cookie,不信任本网站调用第三方域名种的cookie,刚好我们的就是不同的域名。
    把权限放到最低,就好使了。
    解决方案:

  • 1、cookie本域名种植
  • 2、IE下,给出单独提示,提示把权限打开

总结:

    其余的像event事件、dom操作、宽高获取兼容性问题,已经被大家知悉,jquery已经帮大家处理掉这些兼容性问题,但是还会经常有一些注意不到的细节。
    IE该死
    IE6-8更该死

分享
返回顶部