前言
本文主要研究的是angularJS框架在IE8下兼容性的问题,分析了导致angularjs框架在ie8下不能使用的各个因素,并逐个分析、解决它,并提出angularjs在IE8下统一的解决方案。
本文目的
1.提供angularJS在IE8下兼容性的统一解决方案。
兼容性说明
编号 |
标题名称 |
描述 |
1 |
angularJS |
angularJs从1.3版本开始已经放弃对IE8的支持 |
2 |
jquery |
Jquery 1.9是最后支持IE6/7/8的版本,且jquery1.9中包含很多html5方法 |
3 |
bootstrap |
Bootstrap css3的特性完全不支持ie8,且bootstrap3需要jquery版本至少为1.9.1 |
4 |
Html5 |
IE8不支持H5的特性和方法 |
5 |
ECMAScript |
IE8仅支持一点ECMAScript5,ECMAScript6完全不支持 |
解决思路
根据上面表格中提出的兼容性问题,可以概括解决angularjs在ie8下兼容性问题的思路如下:
1.降低版本 : 使用angularjs-1.2.30,使用jquery-1.9.1,使用bootstrap3.3
2.加入补丁 : 加入ECMASCRIPT5补丁让IE8支持html5的特性与方法
3.手写补丁 : es5补丁中没有或者无效的方法,需要手写补丁去支持
4.修改源码: 修改控件源码,替换,修改IE8不支持的方法,这是一个复杂、工程量大的问题,只能做到具体问题具体分析。
运用思路1、2可以在IE8中搭建起angularjs前端MVC模式 ,运用思路3、4可以把不支持IE8的控件手动改造成支持IE8的控件,思路全部应用能够搭建支持IE8的angularjs前端框架!
解决版本问题
降低jquery到1.9.1版本,angularjs至少到1.2.30版本,bootstrap到3.3版本,这只是前提,此时并不能搭建好angularjs MVC模式,可以使用ui-router,但是ui-router实现的样式依赖bootstrap3,而bootstrap3不支持IE8,样式全部失效,整个页面布局乱七八糟,要想搭建好angularjs MVC必须解决bootstrap的IE8兼容性问题!
解决Bootstrap兼容性问题
1.使用html5文档声明
<!DOCTYPE html>
2.加入meta标签
前者定义媒体查询,后者确定显示此网页的IE版本。
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-eq