Page 412 - AngularJS权威教程
P. 412
392 第 30 章 AngularJS 和 IE 浏览器
为了让AngularJS能在IE7及更早版本中工作,还需要一个JSON.stringify polyfill 。可以使用
①
JSON3 或者JSON2 实现。
②
③
我们需要根据浏览器的类型来引入这个文件。首先需要下载这个文件,将它存储在应用程序
的某个地方,最后在头部引用它,就像这样:
<!doctype html>
<html xmlns:ng="http://angularjs.org">
<head>
<!--[if lte IE 8]
<script src="lib/json2.js"></script>
<![endif]-->
</head>
<body>
<!-- ... -->
此外,为了在IE中使用ng-app指令,还要设置元素的id为ng-app。
<body id="ng-app" ng-app="myApp">
<!-- ... -->
还可以利用angular-ui-utils库的ie-shiv模块帮助我们在DOM中提供自定义元素。
为了使用ui-utils的ie-shiv库,需要确保安装了angular-ui库。如果下载了ui-utils库,
同时引入了这个模块,那么安装起来就很容易了。可以在Github上的https://github.com/angular-
ui/ui-utils 中找到这个ui-utils。
④
先来确保在应用可访问的位置包含了ui-utils模块,然后像这样引入这个文件:
<!--[if lte IE 8]>
<script type="text/javascript">
// 在这里定义自定义指令
</script>
<script src="lib/angular-ui-ieshiv.js"></script>
<![endif]-->
在这里,我们仅仅在IE8及更早版本的IE中激活了ie-shiv。这个shiv允许我们在全局作用域
上添加自定义指令,它会为IE创建适当的声明。
这个shiv库会查找window.myCustomTags对象。如果定义了window.myCustonTags,这个库
会在加载时引入这些标签,同时一同引入其余的Angular库指令:
<!--[if lte IE 8]>
<script type="text/javascript">
// 在这里定义自定义指令
window.myCustomTags = ['myDirective'];
</script>
<script src="lib/angular-ui-ieshiv.js"></script>
<![endif]-->
——————————
① polyfill用来添加一些原生功能支持的功能。更多信息可以参考“[译]shim和polyfill有什么区别”(www.cnblogs.com/
ziyunfei/archive/2012/09/17/268829.html)和“HTML5逸事:一袋‘腻子粉’的故事(待续)”(www.ituring.com.cn/
article/766)。——译者注
② http://bestiejs.github.io/json3/
③ https://github.com/douglascrockford/JSON-js
④ https://github.com/angular-ui/ui-utils