11

Google Chrome 无法正确显示 Flash 视频的 z-index。

在 Firefox 或 Internet Explorer 中查看http://maxusglobal.com/ 。

现在在 Chrome 中查看它。

页面顶部的大视频应该有一个“预览”图像,z-indexed 在它的顶部。它适用于 Firefox 和 Internet Explorer,但不适用于 Google Chrome。

这似乎不是WebKit的事情,而是一个 Chrome 错误。

我已经尝试了所有的 wmode(不透明、窗口和透明),但这并不能解决问题。我还更改了 Flash 框的 z-index,但仍然无法正常工作。

4

6 回答 6

28

添加wmode="transparent"到您的<embed>标签。像下面这样。

<embed wmode="transparent" 
       height="314" width="516"
       type="application/x-shockwave-flash" 
       id="player"
       name="page_player" 
       src="/swfs/player.swf" 
       allowscriptaccess="always"
       allowfullscreen="true" 
       flashvars="file=/attachments/files/u_t_o_N_1.mp4">

hello如果没有必要,隐藏图像的 div 。

我希望这有帮助!

于 2010-12-08T07:36:15.127 回答
4

我看到这里有几个选项:

选项1

使用 wmode 标签,您需要在渲染对象时设置它。稍后添加将不起作用
(ref1) (ref2)

使用 opaque 应该允许您使用 CSS z-index 样式定位对象。请注意,您应该在<embed>标签中设置此值以及param
(ref3) (ref4)

选项 2

隐藏对象,直到用户单击您的预览按钮。在我注意到 Sotiris 说了同样的话之前,我花了很长时间追踪你使用的 javascript。我相信这是您的代码:

$('#play_video_box').click(function(){

if(app.isiPhone() == "iphone" || app.isiPhone() == "ipad"){
return true;
}

$(this).fadeOut('fast');
$('#page_video_preview_image').fadeOut('fast');
var player = document.getElementById('player');
player.sendEvent('PLAY');
return false;
});

我会将一行修改为:

$('#page_video_preview_image').fadeOut('fast',function(){$('#video_wrapper').css('visibility','visible')});

并使用 CSS 将可见性设置为默认隐藏。根据您的无 javascript 支持要求,您可能需要对其进行修改。

这里提供的第三个链接是一篇关于 wmodes 及其工作原理的相当不错的文章 - 如果您决定使用选项 1 并遇到麻烦,我建议您检查一下。

希望有帮助!

于 2010-12-08T08:24:36.580 回答
2

在使用 Google Chrome 8 时,我也遇到了嵌入式 Flash 对象的 z-index 问题。在 IE 7 中一切正常。lnrbob 用他的选项 1 解决方案一针见血。我在<embed>标签中将 wmode 设置为不透明;但我忽略了将 wmode 添加为<param>标签。一旦我<param name="wmode" value="opaque"/><object>标签和<embed>标签之间添加,z-index 就开始在 Chrome 中完美运行而不会破坏 IE。

于 2011-01-25T20:02:55.177 回答
0

它不适用于 Firefox 3.6 和 Opera 10,也不适用于 Windows。

visibility:hidden;可能的解决方案:只需为选择器添加 CSS #both_video_and_preview_image #video_wrapper

然后添加 jQuery 代码(我看到您使用了该库),因此当用户单击预览图像时,上述选择器的可见性变为可见。

$("#page_video_preview_image").click(function() {
    $("#both_video_and_preview_image #video_wrapper").css("visibility","visible");
})
于 2010-12-06T14:48:41.270 回答
0

以下代码适用于 ie、firefox、opera,但不适用于 chrome(版本 21)

<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="300" height="250">
<param name="movie" value="http://img.emarbox.com/dsp/img/300x250.swf">
<param name="quality" value="high"></param>
<param name="wmode" value="opaque"></param>
<param name="allowFullScreen" value="true"></param>
<embed src="http://img.emarbox.com/dsp/img/300x250.swf" wmode="opaque" allowfullscreen="true" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="300" height="250"></embed>
</object>

<div style="cursor: pointer; margin-top:-250px; width:300px; height:250px; z-index:1; visibility: visible;">
<a href="http://www.emarbox.com" target="_blank" >
<img border="0" src="http://img.emarbox.com/dsp/img/flash_blank.gif" width="300" height="250" border="0" /></a>
</div>
于 2012-08-30T03:49:15.637 回答
-1

您是否尝试过使用 SWFObject 并像这样加载它?

于 2010-11-30T21:04:38.260 回答