不同浏览器中 Flash 与其他元素发生覆盖时有差异
2013-05-25 22:59
330 查看
问题描述
不同浏览器中 Flash 与其他元素发生覆盖时, Flash 与其他元素的层叠顺序有差异。造成的影响
Flash 被其他元素遮挡,或其他元素被 Flash 遮挡,与期待效果不同。受影响的浏览器
所有浏览器 |
---|
问题分析
一般情况下,页面中会用 OBJECT 与 EMBED 元素来显示一个 FLASH 动画。大致代码如下:<object type="application/x-shockwave-flash" data="clock.swf"> <param value="clock.swf" name="movie"/> <param value="wmode" name="window"/> </object>OBJECT 元素内 PARAM 元素负责为 Flash 动画设置相应参数,其中 wmode 参数较为重要,它决定了 Flash 的渲染方式。Adobe 公司的 Flash 开发者文档中有关于 wmode 参数值的详细说明: Support for WMODE当 wmode = "transparent" 或 "opaque" 时,Flash 动画交由页面渲染引擎负责渲染,此时它在定位流中的位置由 CSS 中的 'z-index' 特性控制。如果 wmode 没有设置,他的默认值是 window,这代表 Flash 动画将在 window 窗口级别渲染,相应元素拥有系统级的窗口句柄,它所在定位流中的 'z-index' 特性将失效,而会处于所有未拥有窗口句柄特性的页面元素之上,此时用来控制定位流中 Z 轴方向中上下层位置的 'z-index' 特性将会失效。分析如下代码:
<body style="margin:40px;"> <object type="application/x-shockwave-flash" data="clock.swf" style="height:80px; width:80px; position:absolute; top:0; left:0;"> <param value="clock.swf" name="movie"/><param value="wmode" name="window"/> </object> <iframe src="http://www.google.com/logos/" style="width:240px; height:120px;"></iframe> </body>页面中用来播放 Flash 的 OBJECT 元素被设置了绝对定位 position:absolute,使其处于定位流中,'z-index' 特性没有设置,采用默认值 auto。此时它已不在普通流中占有位置。由于其本身已经处于定位流中,页面中其他元素均处于普通流中,它本身还在窗口级别渲染,其他定位流中元素也无法覆盖它。因此可以断定它会遮挡住其后的 IFRAME 元素显示。观看实际情况:
IE6 IE7 IE8 Firefox Safari Opera | Chrome |
---|---|
<body style="margin:40px;"> <iframe src=\'#\'" style="font-style:normal;text-decoration:underline;">http://www.google.com/logos/" style="width:240px; height:120px;"></iframe> <object type="application/x-shockwave-flash" data="clock.swf" style="height:80px; width:80px; position:absolute; top:0; left:0;"> <param value="clock.swf" name="movie"/><param value="wmode" name="window"/> </object> </body>观看实际情况:
所有浏览器 |
---|
<!DOCTYPE HTML> <html> <head></head> <body style="margin:40px;"> <object type="application/x-shockwave-flash" data="clock.swf" style="height:80px; width:80px; position:absolute; top:0; left:0;"> <param value="clock.swf" name="movie"/><param value="wmode" name="window"/> </object> <div style="top:0;position:absolute; left: 0;background: gold;">this is test word this is test word</div> </body> </html>以上代码在不同浏览器中表现如下:
Firefox | IE6 IE7 IE8 Chrome Safari Opera |
---|---|
<!DOCTYPE HTML> <html> <head></head> <body style="margin:40px;"> <object type="application/x-shockwave-flash" data="clock.swf" style="height:80px; width:80px; position:absolute; top:0; left:0;"> <param value="clock.swf" name="movie"/><param value="wmode" name="window"/> </object> <iframe src="about:blank" class="cover_iframe" width="200" height="50" frameborder="1" scrolling="no" style="position:absolute;top:0;left:0;"></iframe> </body> </html>以上代码在不同浏览器中表现如下:
IE Chrome | Firefox Safari Opera |
---|---|
<!DOCTYPE HTML> <html> <head></head> <body style="margin:40px;"> <embed type="application/x-shockwave-flash" src="clock.swf" style="height:80px; width:80px; position:absolute; top:0; left:0;" wmode="transparent"> </embed> <iframe src="about:blank" width="200" height="40" frameborder="1" scrolling="no" style="position:absolute;top:0px;left:0px;background: gold;"></iframe> </body> </html>以上代码在不同浏览器中表现如下:
IE | Firefox Chrome Safari Opera |
---|---|
解决方案
若有页面需求是要求其他元素遮挡 Flash1.使用 EMBED 引入Flash 。2.wmode的值使用 'transparent' 或 'opaque' 。
3.使用的 iframe 需要设置背景色(设置为白色)。
注意:当wmode的值不是window时,Flash中有可能无法切换输入法,该问题为插件问题,期待插件厂商修复。关于 IE 和非IE浏览器背景色不同的问题请参见RC3001: IE6 IE7(Q) IE8(Q) 中 IFRAME 元素 'background-color' 特性默认值不是 transparent
本文出自 “泉水叮咚” 博客,请务必保留此出处http://loveqiaozh.blog.51cto.com/2888594/1210141
相关文章推荐
- [转] RX8012: 不同浏览器中 Flash 与其他元素发生覆盖时有差异
- 各浏览器下使用 OBJECT 元素和 EMBED 元素嵌入 Flash 存在差异
- HO8001: 各浏览器下使用 OBJECT 元素和 EMBED 元素嵌入 Flash 存在差异
- Flash与z-index(解决flash覆盖其他元素的问题)
- jsp页面插入Flash时覆盖其他float元素的解决办法
- 各浏览器下使用 OBJECT 元素和 EMBED 元素嵌入 Flash 存在差异
- Firefox 浏览器对 TABLE 中绝对定位元素包含块的判定有错误,某些情况下会导致绝对定位元素位置跟其他浏览器中有差异
- HO8001: 各浏览器下使用 OBJECT 元素和 EMBED 元素嵌入 Flash 存在差异
- 各浏览器下使用 OBJECT 元素和 EMBED 元素嵌入 Flash 存在差异
- IE6下 元素宽度或高度 与其他浏览器不同的原因
- flash无法覆盖的问题_三种办法可以解决flash覆盖其他元素
- 捕捉childNodes在不同浏览器中的差异
- 元素title属性在不同浏览器下的行为表现
- 不同浏览器获取DOM元素的各种高度
- (转)捕捉childNodes在不同浏览器中的差异
- QTP不同版本以及不同浏览器识别对象的差异
- 发现不错的CSS不同浏览器之间存在的差异总结,很有用,转载喽。
- 表单与其他页面元素的作用不同
- 修正网页中div或ul或其他块元素在IE6,IE7,FF,Opera中显示不同的杀手锏
- Javascript不同浏览器差异及兼容方法