• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

AngularJs IE Compatibility 兼容老版本IE

angularjs 搞代码 4年前 (2021-12-31) 57次浏览 已收录 0个评论

本文主要介绍AngularJs IE Compatibility 兼容老版本IE的问题及解决办法,有兴趣的小伙伴可以参考下

Internet Explorer Compatibility

一、总括

  这文章描述Internet Explorer(IE)处理自定义HTML属性、标签的特性(可以理解为“特别糟糕的性质”)。如果我们打算让应用兼容IE8以及以下的版本,那么可以继续往下看。

二、Short Version(简述)

  为了让我们的angular应用在IE上工作,请确保:

  1. 按需引入JSON.stringify(IE7或以下的都需要这玩意)。我们可以使用JSON2(https://github.com/douglascrockford/JSON-js)或者JSON3(http://bestiejs.github.com/json3/)。

  2. 不要使用自定义标签,诸如(用属性版代替,如

)。如果还是想使用,则请看第3点。

  3. 如果你确实想使用自定义标签,那么你必须做以下步骤,让老IE认识你的自定义标签。

   <!--[if lte IE 8]>  <![endif]--> ... <br />

需要关注的是:

xmls:ng – 命名空间 – 对于每一个我们计划使用的自定义标签,都需要有一个命名空间。

document.createElement(“自定义标签名称”) – 自定义标签名称的创建 – 因为这是旧版IE一个问题,我们需要通过IE判断注释()来特殊处理。对于每一个没有命名空间或者非HTML默认标签,都需要进行这种预定义,以让IE不会犯傻(例如没样式…)。

三、Long Version(详情)

  IE对于非标准HTML标签的处理会有问题。这大致可以氛围两类(有、无命名空间),每一类都有他自己的一个解决方式来源gaodai#ma#com搞*代#码网

如果标签名称以”my:”开头的话,将被当作命名空间,必须要一个想对应的命名空间定义()。

如果标签没有命名空间(xx:开头),但并非一个标准的HTML的话,需要通过document.createElement(“标签名称”)进行声明。

如果我们打算对自定义标签定义样式的话,我们必须使用document.createElement(“标签名称”)来进行自定义,regardless of XML命名空间(实验证明,regardless of XML namespace意思很有可能是:不用管有命名空间的自定义标签)。

四、The Good News(好消息)

  好消息是,这个限制仅仅是对于元素名称的,对属性名称没影响。所以不需要对自定义属性(

my-tag your:tag>

)做特殊处理。

五、What happens if I fail to do this?(没做这些处理的话,会发生什么事呢?!)

  假设我们有一个非标准的HTML标签(对于my:tag或者my-tag都有一样的结果。但测试过后,发现命名空间方式不会有这种烦恼)。

   some text

    一般来说,将会转换为一下的DOM结构:

 #document +- HTML +- BODY +- mytag +- #text: some text 

   我们期望的,是BODY元素有一个mytag子元素,mytag又有一个文本子元素”some text”。

  但IE不是这么干的(如果做了纠正措施,则不包括在内)!

 #document +- HTML +- BODY +- mytag +- #text: some text +- /mytag 

   在IE里面,BODY将会有3个孩子元素:

  1. 一个自闭合的” mytag”,与
类似。末尾的“/”是可选的,但
标签不允许有任何子元素,所以浏览器将其分为
、some text、
三个兄弟元素,而不是单独的
元素中含有some text元素。

  2. 一个文本节点“some text”。这本来应该是mytag元素的子节点,不是它的兄弟节点。

  3. 一个错误的自闭合标签” /mytag”,说它错误,是因为元素名称不允许含有”/”字符(在最后应该是允许的
)。此外,闭合元素不应该是DOM的一部分(不应该以元素形式出现),因为它只用作勾画DOM结构的边界。

六、CSS Styling of Custom Tag Names(对自定义标签进行CSS样式定义)

  如果想让CSS选择器对自定义元素有效,那么自定义元素必须通过document.createElement(“元素名称”)进行预定义,regardless of XML namespace(实验证明,这里是不用管有XML命名空间的?!)

  这里是自定义标签样式定义的例子:

   <title>IE Compatbility</title><!--[if lte IE 8]>  <![endif]--> ng\:view { display: block; border: 1px solid red; width:100px; height:100px; } ng-include { display: block; border: 1px solid blue; width:100px; height:100px; }  

以上就是AngularJs IE Compatibility 兼容老版本IE的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:AngularJs IE Compatibility 兼容老版本IE

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址