AngularJS的IE浏览器兼容性

一.概览
如果你要让你的AngularJS应用兼容IE8和IE8以下的版本的话,你需要做一些特殊处理。

 

二.简易版

要让你的AngularJS应用在IE中正常运行你必须:

a.确保JSON字符串能被正常解析(IE7需要),你可以使用JSON2或者JSON3来实现。
b.不能使用自定义的元素标签,如<ng:view>(你只能使用属性的形式,如<div ng-view>)

或者
c.如果你用了自定义的标签名,那你必须按照以下步骤做才能保证IE正常运行:

<htmlxmlns:ng="http://angularjs.org"><head><!--[if lte IE 8]>
  <script>
     document.createElement('ng-include');
     document.createElement('ng-pluralize');
     document.createElement('ng-view');
     // Optionally these for CSS
    document.createElement('ng:include');
    document.createElement('ng:pluralize');
    document.createElement('ng:view');
   </script>
<![endif]--></head><body>...</body></html>

        其中重要的部分是:
xmlns:ng:命名空间,你需要为你使用或者准备使用的每一个自定义标签准备一个命名空间。
document.createElement(你的标签名) :自定义标签的创建,因为这只是老版本IE的一个问题,所以你需要根据情况使用。对于每一个你没有使用命名空间或者HTML中没有定义的标签,你需要预先声明它彩色能使IE正常工作。

 

三.详细版
IE处理非标准标签名会产生问题。问题可以分为两类,每类都有自己的解决方法。
a.如果标签名是以my:前缀开始的: 这会被当成是一个XML的命名空间,并且必须使用`来声明。
b.如果标签没有:符号,但它又不是一个标准的HTML标签。那么就必须预先使用document.createElement(‘my-tag’)来创建它。
c.如果你准备使用css选择器来对自定义标签添加样式,那么你就必须先用document.createElement(‘my-tag’)来创建一下,不管有没有XML命名空间。

 

Tagged: ,

Comments are closed.