您的位置:首页 > Web前端 > HTML

解决FLASH与DIV覆盖遮挡以及FF无法显示innerHTML等元素的方法

2012-04-05 18:18 615 查看
1,描述

一段倒计时的JS脚本,参见我上篇文章,在美工添加了flash后,出现DIV层被FLASH遮挡的问题,应该说这是个经典问题,我也是找了半天找到了不同浏览器下FLASH、DIV的遮挡解决办法;

网上有用CSS:z-index来解决问题,但其实效果不好

真正的解决方法是:

对于IE,对与<object>中添加如下标签:<param name="wmode" value="transparent">,值得说明的是value的值不止一种,有需要可以网上搜寻;

对于FF和CHROME,上面设置是没有效果的,需要在<embed>标签中添加如下属性:wmode="transparent";

从此完美解决了

示例:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444XXX540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="1200" height="600" title="flash">
    	  <param name="movie" value="flash/XXX.swf" />
    	  <param name="quality" value="high" />
    	  <param name="wmode" value="transparent">
    	  <embed wmode="transparent" src="flash/XXX.swf" width="1200" height="600" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>
    	</object>
请仔细察看添加的两个参数。

2,新的问题

这次的项目中,按照上面方法确实解决了IE和CHROME下的问题,但是在FF下依然无法显示倒计时<div>,奇怪的是在上次项目中,是完全解决的,在FF也是正常的,以至于我把问题着眼点放在了flash和div层的遮挡上来,网上搜寻半天,无所查获。

一篇文章提点了我:

来看一下本来的代码:

LiveClock.innerHTML = "现在离"+symbol+"结束还有"+hour2+"小时"+minute2+"分"+second2+"秒" ;

没有用Jquery库;

这段代码在IE和CHROME下都是正常的,在火狐下却无法显示倒计时;

在百思不的其解,先后以为是FF对innerHTML片段支持不好,在网上也发现了一些关于这方面的BUG和一些解决方法,但是没有解决我的问题;

后来发现真正的代码是:

document.getElementById("LiveClock").innerHTML = "现在离"+symbol+"结束还有"+hour2+"小时"+minute2+"分"+second2+"秒";

看出了没有

居然是这个原因,在FF下,定位标签必须是getElementById方法,在IE和CHROME下完全正常,这掩盖的代码的问题,按照严格的W3C文档来说,确实火狐是正确的,但是显得比较死板。

而且在测试代码功能的时候,其实我还试了FF,完全是正常的,那时候也没有用getElementById,但是显示也是正常的,后来明白,测试功能的时候,没有过于复杂的HTML标签,就一个div框,所以没有发现这个问题。

可能有用的一些文章:http://huangyunbin.iteye.com/blog/1110675

http://hi.baidu.com/cylic12345/blog/item/01c4b6c9ff654710be09e621.html
http://www.ittang.com/2010/0128/10682.html
3,修改添加3秒倒计时功能(待添加)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐