我有一个菜单栏,里面有几个子菜单项。主页包含位于菜单栏下方的flash动画。当子菜单项位于Flash文件上时,Flash文件将显示在菜单栏上。我尝试使用z-index,但它不起作用。
此问题仅发生在IE中。
任何提示?
由于
答案 0 :(得分:25)
是克里斯,
您必须将属性设置为flash嵌入代码
<param name="wmode" value="transparent" />
这将有效
答案 1 :(得分:6)
在插入Flash文件的位置,您需要将窗口模式设置为透明:
<embed src="flashfile" wmode="transparent">
答案 2 :(得分:2)
Muneer和Tim已经给出了一个很好的答案,但我想补充一些额外的信息:
transparent
和opaque
值会导致可访问性问题,导致它们将Flash对象的内容隐藏到屏幕阅读器。屏幕阅读器只有window
的默认值答案 3 :(得分:2)
有一个更好的解决方案,因为添加该参数并不总是有效,特别是在div中使用flash对象时。
在页面的末尾注册flash对象,如下所示:
<script type="text/javascript">
swfobject.registerObject('FlashIdName');
</script>
然后像这样调用一个javascript函数:
<script type="text/javascript">
swfobject.registerObject('FlashIdName');
Chk_Flash('FlashIdName');
</script>
此功能执行以下操作:
<script type="text/javascript">
function Chk_Flash(ToRegister)
{
document.getElementById('FlashIdName').style.visibility = 'visible';
return true;
}
</script>
这适用于所有浏览器100%
您也可以使用:
document.getElementById('FlashIdName').style.visibility = 'hidden';
现在,如果你在div标签上调用动作,例如:
document.getElementById('MyDiv').style.visibility = 'block';
或 document.getElementById('MyDiv')。style.visibility ='none';
你需要做的是先做div动作,然后按顺序调用flash visibilty:
document.getElementById('MyDiv').style.display = 'block';
document.getElementById('FlashIdName').style.visibility = 'visible';
享受!
答案 4 :(得分:1)
使用这些值代替'transparent':
wmode="opaque"
答案 5 :(得分:1)
我终于找到了一个适用于所有浏览器的解决方案。
如果我用过
<param name="wmode" value="transparent" />
,我会在IE上获得所需的输出但不在Firefox上,如果我使用
<embed wmode="transparent" ></embed>
,我在firefox中获得了所需的输出但不是ie。
所以我决定使用两种适用于所有浏览器的方法
<!--[if IE]>
<param name="wmode" value="transparent" />
<![endif]-->
<embed wmode="transparent" ></embed>