我有一个需要 flash 9 的 swf,并且我正在尝试在其上显示内容。为了实现这一点,我将 wmode 设置为透明。问题是,这仅在用户安装了 flash 10 时才有效,而且我真的不想需要 flash 10 来查看我正在处理的网站上的内容。当我使用 flash 9 在 flash 内容上拉出一个 div 时,swf 会渗入或完全覆盖该 div。

如何在不将 flash 10 设为用户要求的情况下防止这种情况发生?

我使用 swfobject 嵌入 swf 和 jquery-ui 以在 Flash 内容上显示 div。

编辑:

此失败行为仅在 Safari 中出现。

有帮助吗?

解决方案

我不确定这是否会对您本身有帮助。但我使用以下方法通过 Flash 显示内容。

我前段时间遇到过这个问题。我要向用户显示一个弹出窗口,显示网站注册的条款和条件。弹出窗口正常,但页面顶部有一个 Flash 影片,隐藏了对话框的上部部分。经过测试并广泛使用的方法是将 Iframe 放置在您想要显示内容的位置,并绝对定位您的内容和 IFrame。例如,如果您想在 Flash 影片上方显示 div,请按如下方式放置 IFrame:

    <iframe style="position:absolute;top:250;left:150;"></iframe>

然后将 div 放置在该 iframe 的正上方,如下所示:

    <div style="position:absolute;top:250;left:150;"></div>

我在页面上使用 jquery 使用 ui.dialog 插件显示对话框。经过一段时间的闲逛后,我设计了以下简单的解决方案。

1) 在 movie 元素上放置 id 属性来唯一标识 movie 对象。喜欢,

<object id="movie1"></object>

2) 在显示对话框(或其他相关内容)之前调用 JavaScript 函数来隐藏影片。喜欢,

$("#movie1").css("display","none");

3)现在显示对话框。喜欢,

$("#dialog").dialog("open");

4)关闭对话框后,再次显示影片。喜欢,

  $("#dialog").dialog("close");
  $("#movie1").css("display","inline"); 

其他提示

wmode transparent已成为Flash的一部分多年,并不仅限于Flash Player 10.

无论如何,你不需要使用wmode透明;除非你真的需要SWF中的透明度,否则你应该使用wmode opaque。它的错误越来越少,处理能力越来越低。

诀窍是确保您的HTML元素在CSS中具有“位置”。

尝试按照以下示例和说明操作: http://learnswfobject.com/advanced-topics /放置-HTML元素-过一个快闪电影/

我无法提供可以解决问题的建议,因此我建议您可能想避免该问题。

而不是将 (x)html 内容放在 z-index 中的 flash 内容上

+------------+
|            |
| +-------------+
| |   html      |
| |             |
| +-------------+
|   Flash    |
+------------+

不如将 (x)html 内容放置在窗口中 Flash 上方:

+------------+
|  html      |
|            |
+------------+
+------------+
|            |
| Flash      |
|            |
|            |
|            |
|            |
+------------+

它并不理想,但它至少提供了一个可行的解决方案,直到 Flash/html 能够更成功地共存。

我在书签中发现了这一点(它们来自10年前的时代)。虽然我现在没有任何Flash Player 9 / Safari来验证这一点。试一试。

浏览器的不同WModes

正如pipwerks所说,WMode应该控制它,但并非所有平台/浏览器都能正确处理它们。在这种情况下,我会认为这是Safari的/ Flash9故障而且无法修复。

尝试将wmode参数设置为opaque。当涉及到Flash时,这似乎解决了许多HTML层/深度问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top