国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

AngularJs IE Compatibility 兼容老版本IE

2019-11-20 09:06:20
字體:
供稿:網(wǎng)友

Internet Explorer Compatibility

一、總括

  這文章描述Internet Explorer(IE)處理自定義HTML屬性、標(biāo)簽的特性(可以理解為“特別糟糕的性質(zhì)”)。如果我們打算讓應(yīng)用兼容IE8以及以下的版本,那么可以繼續(xù)往下看。

二、Short Version(簡述)

  為了讓我們的angular應(yīng)用在IE上工作,請(qǐng)確保:

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

  2. 不要使用自定義標(biāo)簽,諸如<ng:view>(用屬性版代替,如<div ng-view>)。如果還是想使用,則請(qǐng)看第3點(diǎn)。

  3. 如果你確實(shí)想使用自定義標(biāo)簽,那么你必須做以下步驟,讓老IE認(rèn)識(shí)你的自定義標(biāo)簽。

<html xmlns: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>

需要關(guān)注的是:

xmls:ng - 命名空間 - 對(duì)于每一個(gè)我們計(jì)劃使用的自定義標(biāo)簽,都需要有一個(gè)命名空間。

document.createElement(“自定義標(biāo)簽名稱”) - 自定義標(biāo)簽名稱的創(chuàng)建 - 因?yàn)檫@是舊版IE一個(gè)問題,我們需要通過IE判斷注釋(<!--[if lte IE 8]>…<![endif]-->)來特殊處理。對(duì)于每一個(gè)沒有命名空間或者非HTML默認(rèn)標(biāo)簽,都需要進(jìn)行這種預(yù)定義,以讓IE不會(huì)犯傻(例如沒樣式…)。

三、Long Version(詳情)

  IE對(duì)于非標(biāo)準(zhǔn)HTML標(biāo)簽的處理會(huì)有問題。這大致可以氛圍兩類(有、無命名空間),每一類都有他自己的一個(gè)解決方式。

如果標(biāo)簽名稱以”my:”開頭的話,將被當(dāng)作命名空間,必須要一個(gè)想對(duì)應(yīng)的命名空間定義(<html xmlns:my=”ignored”>)。

如果標(biāo)簽沒有命名空間(xx:開頭),但并非一個(gè)標(biāo)準(zhǔn)的HTML的話,需要通過document.createElement(“標(biāo)簽名稱”)進(jìn)行聲明。

如果我們打算對(duì)自定義標(biāo)簽定義樣式的話,我們必須使用document.createElement(“標(biāo)簽名稱”)來進(jìn)行自定義,regardless of XML命名空間(實(shí)驗(yàn)證明,regardless of XML namespace意思很有可能是:不用管有命名空間的自定義標(biāo)簽)。

四、The Good News(好消息)

  好消息是,這個(gè)限制僅僅是對(duì)于元素名稱的,對(duì)屬性名稱沒影響。所以不需要對(duì)自定義屬性(<div> my-tag your:tag></div>)做特殊處理。

五、What happens if I fail to do this?(沒做這些處理的話,會(huì)發(fā)生什么事呢?!)

  假設(shè)我們有一個(gè)非標(biāo)準(zhǔn)的HTML標(biāo)簽(對(duì)于my:tag或者my-tag都有一樣的結(jié)果。但測(cè)試過后,發(fā)現(xiàn)命名空間方式不會(huì)有這種煩惱)。

<html>  <body>    <mytag>some text</mytag>  </body></html>

    一般來說,將會(huì)轉(zhuǎn)換為一下的DOM結(jié)構(gòu):

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

   我們期望的,是BODY元素有一個(gè)mytag子元素,mytag又有一個(gè)文本子元素”some text”。

  但I(xiàn)E不是這么干的(如果做了糾正措施,則不包括在內(nèi))!

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

   在IE里面,BODY將會(huì)有3個(gè)孩子元素:

  1. 一個(gè)自閉合的” mytag”,與<br/>類似。末尾的“/”是可選的,但<br>標(biāo)簽不允許有任何子元素,所以瀏覽器將其分為<br>、some text、</br>三個(gè)兄弟元素,而不是單獨(dú)的<br>元素中含有some text元素。

  2. 一個(gè)文本節(jié)點(diǎn)“some text”。這本來應(yīng)該是mytag元素的子節(jié)點(diǎn),不是它的兄弟節(jié)點(diǎn)。

  3. 一個(gè)錯(cuò)誤的自閉合標(biāo)簽” /mytag”,說它錯(cuò)誤,是因?yàn)樵孛Q不允許含有”/”字符(在最后應(yīng)該是允許的<br/>)。此外,閉合元素不應(yīng)該是DOM的一部分(不應(yīng)該以元素形式出現(xiàn)),因?yàn)樗挥米鞴串婦OM結(jié)構(gòu)的邊界。

六、CSS Styling of Custom Tag Names(對(duì)自定義標(biāo)簽進(jìn)行CSS樣式定義)

  如果想讓CSS選擇器對(duì)自定義元素有效,那么自定義元素必須通過document.createElement(“元素名稱”)進(jìn)行預(yù)定義,regardless of XML namespace(實(shí)驗(yàn)證明,這里是不用管有XML命名空間的?!)

  這里是自定義標(biāo)簽樣式定義的例子:

<!DOCTYPE html><html xmlns:ng="needed for ng: namespace"><head>  <title>IE Compatbility</title>  <!--[if lte IE 8]>  <script>    // needed to make ng-include parse properly    document.createElement('ng-include');    // needed to enable CSS reference    document.createElement('ng:view');//注釋掉也可以?!  </script>  <![endif]-->  <style>    ng/:view {      display: block;      border: 1px solid red;      width:100px;      height:100px;    }    ng-include {      display: block;      border: 1px solid blue;      width:100px;      height:100px;    }  </style></head><body>  <ng:view></ng:view>  <ng-include></ng-include></body></html>
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳阳县| 安岳县| 吴川市| 罗江县| 弋阳县| 河北区| 出国| 武宣县| 武邑县| 海林市| 云阳县| 同仁县| 门头沟区| 汨罗市| 瑞丽市| 田林县| 平潭县| 安吉县| 九台市| 新和县| 南雄市| 专栏| 丹江口市| 承德市| 吴江市| 巴马| 洪泽县| 藁城市| 任丘市| 油尖旺区| 白水县| 惠水县| 阳江市| 平遥县| 荔波县| 宽甸| 苍南县| 玉门市| 河津市| 馆陶县| 平安县|