IE6 重複字元的bug

weixin_34321977發表於2009-12-29
  • 一個容器包含2兩個具有“float”樣式的子容器。
  • 第二個容器的寬度大於父容器的寬度,或者父容器寬度減去第二個容器寬度的值小於3。(說到3,這裡稍微多說一句——IE7還修正了IE6中的一個bug,bug名字就叫做“3畫素bug”)
  • 在第二個容器前存在註釋(這也是為什麼此bug也叫做“IE6註釋bug”的原因)。
<!DOCTYPE html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="YES!B/S!,web標準,楊正禕,部落格園,例項程式碼" />
<meta name="Description" content="這是一個簡單YES!B/S!文章示例頁面,來自楊正禕的部落格,http://justinyoung.cnblogs.com/" />
<title>YES!B/S!文章示例頁面</title>
</head>
<body>
<div style="width:200px;">
<div style="float:left;"></div>
<!-- 如果是IE6,你將多看到一個“影”字 -->
<div style="float:left;width:200px;">歌劇院的魅影</div>
</div>
</body>
</html>

http://www.cnblogs.com/echohqu/archive/2008/09/02/1282166.html

為何會出現重複文字
bug雖然的的確確的存在,但是為什麼會出現這樣的bug依然沒有統一的定論。不同的高手也是各執一詞,誰也說服不了誰。真正的原因也許只有當時的IE6團隊才能道出來,但是現在仍然沒有官方的說法。下面列出來的這兩種說法,是隻是現在網上認可度比較高的而已——

IE6瀏覽器對<!-- -->註釋的解釋存在bug引起的。
“3畫素bug”的擴充套件後遺症。(“3畫素bug”我們將在《IE7的web標準之道》系列以後的文章中講到)
其他的一些說法

如何消滅重複文字
引起的原因,也許我們可以不知道,但是如何去消除卻是我們一定要關注的。
“歌劇院魅影bug”已經在IE7中得到修正,在FireFox和Opera中也不會出現,所以bug的修正主要是針對IE6的。

針對於上文中講到的“bug重現條件”,如果要修正bug,只要讓任何一個條件不滿足即可——

改變結構,不出現【一個容器包含2兩個具有“float”樣式的子容器】的結構。
——此解決方案的評論:瘋了!因噎廢食的做法。
減小第二個容器的寬度,使父容器寬度減去第二個容器寬度的值大於3,例如將本文示例中第二個子容器的寬度改為197px。
——此解決方案的評論:在滿足頁面佈局的前提下可以使用。但是當情況比較複雜的時候,可能實施起來比較困難。
去掉所有的註釋。
——此解決方案的評論:最直接的做法,但是“沒有註釋的程式碼”,的確不是一個好的程式碼寫作習慣。
修正註釋的寫法。將 <!-- 這裡是註釋內容 -->寫成<!--[if !IE]>這裡是註釋內容<![endif]-->
——此解決方案的評論:還不錯的解決方案,但是並不是每個人都對<!--[if !IE]>這裡是註釋內容[endif]-->這種註釋寫法很欣賞。
在第二個容器後面加一個或者多個<div style="clear"></div>來解決。
——此解決方案的評論:另人感覺很不爽的解決方案。但是的確能解決。影響網頁效率
其他的你提供的方法

關於此bug的一些文章資料
其實很早以前就有外國的朋友關注過這個bug,而且在中國也有過一些朋友關注過這個bug。我在寫這篇文章的時候,也一定程度上參照了他們的研究成果,在此向研究此問題的前輩們表示感謝。下面是兩篇研究此bug的文章。希望對你有進一步的幫助。

Holly 'n John 於2004年2月18號發表的一篇文章: 《Explorer 6 Duplicate Characters Bug 》,這是關於此bug比較權威的一篇文章。
經典論壇版主懌飛的《註釋在IE中造成文字溢位的研究》。順便說一下懌飛是一個在web標準方便很有研究的朋友。雖然沒有直接和他接觸過,但是卻一直拜讀他的文章。在此也給這位文章曾給予我很大幫助的朋友做個廣告,他的部落格為地址為:http://www.planabc.net/

http://hi.baidu.com/oxolin/blog/item/74d37d504c6e0c6b843524c6.html


相關文章