IE 的 JS 兼容性问题

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

1、ajax 强制 304

例子:请求了一个列表——添加一条数据——再请求这个列表——数目不添加,打开 IE 的开发工具查看,数据又正常了,使用抓包工具查看,原来 IE 会把之前请求过的 ajax 地址,都当做 304 给处理,直接拿的缓存,没走实际的后台接口。

解决方案:ajax 请求加时间戳、或加随机数、或 jquery ajax 的 cache 设置为 false

PS:不只是 IE,其他浏览器也是一样。

2、汉字乱码

例子:搜索接口,输入汉字后检索,检索不出结果,抓包查看,汉字乱掉了

解决方案:ajax 将检索的关键字编码,使用 encodeURIComponent 都行

3、表格出不来

<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 的 JS 兼容性问题 的全部内容, 来源链接: utcz.com/z/264216.html

回到顶部