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
   407   408   409   410   411   412   413   414   415   416   417