关于浮动embed产生重复字符的问题

2007-11-30 14:47:45

这个问题发现很久了,还是在暑期改版的时候一个页面中的问题。由于当时我的IE6绿色版有些问题,并没有出现这个bug,后来在网吧的IE6上才发现这个问题。 产生该bug需满足两个条件:

  1. 浮动的仅是<embed>标签,外层并无<object>
  2. 相邻浮动容器中的字符不能包含在内联元素中

产生bug的主要代码:

<!--
body{font-size:12px;}
#container{width:900px; margin:0 auto;}
h1{text-align:center;}
p{text-indent:2em; line-height:18px;}
-->
<h1>关于使用浮动&lt;embed&gt;产生重复字符的问题</h1>
<div id="container">
<object width="100" height="100" data="abt.swf" type="application/x-shockwave-flash">
<param name="src" value="abt.swf" /><param name="wmode" value="opaque" />
<param name="quality" value="high" />
</object>
<div id="content" style="margin: 0pt 15px 15px; width: 645px; float:right;">
这个问题发现很久了,还是在暑期改版的时候一个页面中的问题。由于当时我的IE6绿色版有些问题,并没有出现这个bug,后来在网吧的IE6上才发现这个
问题。产生该bug需满足两个条件:浮动的仅是<embed>标签,外层并无<object>相邻浮动容器中的字符不能包含在内联元素中。
<p style="color:#F00; font-size:14px; font-weight:bold;">大家注意看,本段文字的最后一个字符将在下一行重复显示</p>
</div>
</div>

点击查看代码演示 如上所述,产生该bug的条件,其实也隐含了解决此bug的部分方法。故解决此bug至少有以下方法。

  • 使用严格的嵌套方式插入flash,可以使用<object>嵌套,或是在外层嵌套其他标记,只要不让<embed>浮动即可;
  • 相邻文本嵌套在内联元素中;
  • 在文本字符后添加HTML注释,即<!—->;

以下代码为使用注释方式修复此bug:

<!--
body{font-size:12px;}
#container{width:900px; margin:0 auto;}
h1{text-align:center;}
p{text-indent:2em; line-height:18px;}
-->
<h1>关于使用浮动&lt;embed&gt;产生重复字符的问题</h1>
<div id="container">
<object width="100" height="100" data="abt.swf" type="application/x-shockwave-flash"><param name="src" value="abt.swf" /><param name="wmode" value="opaque"
/>
<param name="quality" value="high" />
</object>
<div id="content" style="margin: 0pt 15px 15px; width: 645px; float:right;">
这个问题发现很久了,还是在暑期改版的时候一个页面中的问题。由于当时我的IE6绿色版有些问题,并没有出现这个bug,后来在网吧的IE6上才发现这个
问题。产生该bug需满足两个条件:浮动的仅是<embed>标签,外层并
无<object>相邻浮动容器中的字符不能包含在内联元素中。
<p style="color:#F00; font-size:14px;font-weight:bold;">大家注意看,本段文字的最后一个字符将在下一行重复显示</p>
<!--修复IE6浮动embed产生重复字符bug-->
</div>
</div>

点击查看代码演示 该bug本应该从一开就被避免,只是由于我使用了

<embed src="abt.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="opaque" menu="false" style="width:225px;height:335px;float:left;"></embed>

在页面中插入flash,所以实际中这个问题出现的几率应该是非常的小,发文志之。

相关日志

« [上一篇]
[下一篇] »

Leave a Reply

[Ctrl+Enter]