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 已经帮大家处理掉这些兼容性问题,但是还会经常有一些注意不到的细节。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 大前端接口规范
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论