主頁(yè) > 知識(shí)庫(kù) > XHTML標(biāo)簽的自關(guān)閉寫(xiě)法的壞處分析

XHTML標(biāo)簽的自關(guān)閉寫(xiě)法的壞處分析

熱門(mén)標(biāo)簽:廣州防封電銷(xiāo)機(jī)器人廠家 智能語(yǔ)音電銷(xiāo)機(jī)器人客戶(hù)端 常州電話外呼系統(tǒng)招商 洛陽(yáng)防封卡外呼系統(tǒng)廠家 申請(qǐng)400電話移動(dòng) 山東電銷(xiāo)機(jī)器人軟件 上海400電話辦理到易號(hào)網(wǎng) 南通電銷(xiāo)外呼系統(tǒng)軟件 成都企業(yè)外呼系統(tǒng)
如果你熟悉XML相關(guān)的開(kāi)發(fā),可能也就習(xí)慣于這種寫(xiě)法,想著XML中任何不含子節(jié)點(diǎn)的元素都可以這樣寫(xiě),那么XHTML中沒(méi)有內(nèi)容的標(biāo)簽也都可以這樣寫(xiě)。XHTML中理論上當(dāng)然允許任何標(biāo)簽以自關(guān)閉的方法來(lái)書(shū)寫(xiě),然而瀏覽器兼容性卻帶來(lái)了新問(wèn)題,那就是IE無(wú)法正確識(shí)別某些標(biāo)簽的自關(guān)閉寫(xiě)法。

請(qǐng)嘗試輸入以下XHTML代碼并在IE中瀏覽:p>hello script type="text/javascript" /> world/p>,你會(huì)發(fā)現(xiàn)只能看到前面的hello而不見(jiàn)后面的world,這事情讓人挺無(wú)法解釋的吧??赡苡胁簧偃硕荚?jīng)遇到過(guò)這個(gè)問(wèn)題,并且花了幾個(gè)小時(shí)在上面都找不到合理的解釋。

解釋源自另外一段類(lèi)似的代碼:p>hello textarea /> world/p>,你在IE中看看其顯示效果,能夠得到合理的解釋了嗎?我們能夠看到前面的hello正常顯示了,而后面的world則顯示在textarea里面,這證明IE并沒(méi)有正確識(shí)別textarea標(biāo)簽已經(jīng)自關(guān)閉了,而是當(dāng)它沒(méi)有關(guān)閉,并將后面的內(nèi)容識(shí)別為textarea內(nèi)部的內(nèi)容。

這時(shí)候我們就明白前面那段代碼為什么看不到后面的world了,因?yàn)樗划?dāng)作script的一部分來(lái)識(shí)別了。這就說(shuō)明了,在我們使用XHTML時(shí)并不能好像XML那樣隨意的使用自關(guān)閉的寫(xiě)法,只有少數(shù)原本不需要關(guān)閉的標(biāo)簽可以用自關(guān)閉的寫(xiě)法,其他標(biāo)簽即使沒(méi)有任何內(nèi)容最好也用成對(duì)的關(guān)閉寫(xiě)法。

最后需要提醒大家的是,其實(shí)弱智的parser不僅僅IE有,很多地方都可能碰到由于parser不嚴(yán)謹(jǐn)而引起的問(wèn)題,所以我們?cè)跁?shū)寫(xiě)XHTML的時(shí)候還是要遷就一些老HTML繼承下來(lái)的習(xí)慣,不能好像真的XML那樣自以為符合標(biāo)準(zhǔn)了就隨意寫(xiě)。不信?那么再試一個(gè)吧:p>hello br>/br> world/p>,留意IE與Opera中的顯示效果。

Update: 有部分讀者認(rèn)為我舉的例子是不符合XHTML規(guī)范的,那么請(qǐng)先閱讀XHTML規(guī)范。Empty Elements一節(jié)的中文翻譯如下:“空元素必須要么有一個(gè)結(jié)束標(biāo)記,要么以/>結(jié)束,例如br/>或hr>/hr>。請(qǐng)參考HTML兼容性標(biāo)準(zhǔn)以獲取關(guān)于確保向后兼容HTML4瀏覽器的信息?!笨梢钥吹玫?,規(guī)范中也給出了hr>/hr>這樣的例子,說(shuō)明br>/br>的寫(xiě)法是符合XHTML規(guī)范的,只是沒(méi)有兼容HTML4標(biāo)準(zhǔn)。那么到底XHTML是否兼容HTML4呢?我們來(lái)看Compatibility Issues一節(jié),中文翻譯如下:“雖然并沒(méi)有要求XHTML1.0文檔兼容現(xiàn)有的瀏覽器,但在實(shí)踐中這并不難做到?!币虼耍琗HTML是沒(méi)有規(guī)定文檔必須向下兼容,我給出的例子都是合法的XHTML文檔片斷,當(dāng)出現(xiàn)在完整的XHTML里面時(shí)也全部能通過(guò)W3C Markup Validation Service的驗(yàn)證。

Update again: 其實(shí)我寫(xiě)這篇文章的目的不是為了強(qiáng)調(diào)只符合XHTML規(guī)范就行了,也不是強(qiáng)調(diào)符合XHTML同時(shí)兼容HTML4就夠了,而是應(yīng)該考慮更多需要兼容的情況。例如你的CMS中允許用戶(hù)提交HTML,提交的HTML經(jīng)過(guò)SgmlReader或者其他方法格式化為XHTML,同時(shí)或許還做了其它XML處理,這時(shí)候就有可能將用戶(hù)提交的textarea>/textarea>轉(zhuǎn)換為textarea />,這種情況下你需要通過(guò)跟蹤調(diào)試找出問(wèn)題并不容易,因?yàn)閄ML處理并沒(méi)有違反任何規(guī)范,每一步的處理都是符合語(yǔ)義的。另外最好不要把br />寫(xiě)成br/>,因?yàn)榇_實(shí)有些弱智的parser僅僅因?yàn)樯倭艘粋€(gè)空格就無(wú)法正確識(shí)別。

標(biāo)簽:滄州 萊蕪 賀州 鶴壁 貴州 混顯 廣安 邵陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《XHTML標(biāo)簽的自關(guān)閉寫(xiě)法的壞處分析》,本文關(guān)鍵詞  XHTML,標(biāo)簽,的,自,關(guān)閉,寫(xiě)法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《XHTML標(biāo)簽的自關(guān)閉寫(xiě)法的壞處分析》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于XHTML標(biāo)簽的自關(guān)閉寫(xiě)法的壞處分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章