方法一:
测试div层和flash的交互,发现div层总是被flash层遮盖,解决方法是加个<param name="wmode" value="transparent" />就成了,加完后在IE下问题是解决了,但是FF下好像没有反应,因为IE中和FF加的代码是不一样的,如下:
IE浏览器下可用
<param name="wmode" value="transparent" />
firefox下可用
<embed src="YourFlash.swf" wmode="transparent" ... ></embed>
关于wmode属性资料:
(可选)允许使用 Internet Explorer 4.0 中的透明 Flash 内容、绝对定位和分层显示功能。此标记/属性仅在带有 Flash Player ActiveX 控件的 Windows 中有效。
"Window"在 Web 页上用影片自己的矩形窗口来播放应用程序。"Window"表明此 Flash 应用程序与 HTML 层没有任何交互,并且始终位于最顶层。
"Opaque" 使应用程序隐藏页面上位于它后面的所有内容。
"Transparent"使 HTML 页的背景可以透过应用程序的所有透明部分显示出来,并且可能会降低动画性能。
"Opaque windowless"和"Transparent windowless"都可与 HTML 层交互,从而允许 SWF 文件上方的层遮蔽应用程序。这两种选项之间的差异在于"Transparent"允许透明,因此,如果 SWF 文件的某一部分是透明的,则 SWF 文件下方的 HTML 层可以透过该部分显示出来,而"opaque"则不会显示。
例子:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
width="960" height="85">
<param name="movie" value="images/banner_index.swf">
<param name="quality" value="high">
<param name="quality" value="transparent">
<param name="wmode" value="transparent"> <!--IE中起作用-->
<param name="SCALE" value="exactfit">
<embed src="images/banner_index.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" width="960" height="85" scale="exactfit" wmode="transparent" > <!--在FF中起作用--></embed>
</object>
方法二:
增加iframe在弹层代码的下面,显示时计算弹层的大小,赋予iframe值以遮盖flash部分
<iframe scrolling="no" frameborder="0" id="head_space_iframe" style="display: none; background: none repeat scroll 0% 0% rgb(255, 255, 255); position: absolute; z-index: 90; top: 47px; left: 12px" src="about:blank"></iframe>
//iframe解决flash的遮盖问题
if (jQuery('#head_space_iframe').length > 0) {
var ifrwidth = parseInt(jQuery('#head_space_display').width()) - 3;
var ifrheight = parseInt(jQuery('#head_space_display').height()) - 22;
jQuery('#head_space_display').css('z-index', 99);
jQuery('#head_space_iframe').css({"width":+ifrwidth+"px", "height":+ifrheight+"px"});
jQuery('#head_space_iframe').show();
}