2

我有一个包含几个子元素的 div,其中一个是 Flash 电影。

滚动此 div 时,我希望它更改样式以指示它已滚动。我的问题是mouseoverandmouseout事件并不总是触发,尤其是当用户将鼠标移动到 flash 元素上过快时。

关于如何确保mouseover始终触发事件的任何建议。

我无法将事件添加到 Flash 电影本身,因为它是我没有源代码的专有代码。

此外,我无法在 div/图像中覆盖 Flash 电影,因为我需要在 Flash 本身内发生翻转和单击事件。

4

3 回答 3

2

将 object/embed 标签的wmode参数更改为opaque

您的代码应如下所示。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia
.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="800" height="600">
    <param name="movie" value="movie.swf">
    <param name="wmode" value="opaque">
    <embed src="movie.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="800" height="600"></embed>
</object>
于 2008-10-21T21:26:37.303 回答
1

你可以做的是用一个不可见的 div 覆盖 flash 元素。将您的 onmouseover 处理程序放在该 div 上,并在处理程序中添加一行以隐藏覆盖 div。同时,onmouseover向窗口添加一个函数 - 当鼠标离开 flash 元素时应该会触发该函数。(我希望)。

  1. 有一个<div>覆盖你的闪光灯。
  2. 当用户将鼠标悬停在它上面时:
    1. 它调用它需要执行的任何函数。
    2. 它隐藏自己,允许与 SWF 进行正常交互。
    3. 它在窗口上放置了一个鼠标悬停功能,它将:
      1. 再次显示原件div
      2. 调用你的“mouseout”函数。
      3. 删除该window.onmouseover功能。
于 2008-10-14T04:34:40.970 回答
0

简单的答案是,鉴于您的限制,您不能。

您似乎已经知道的复杂答案。Flash 影片在不触发常规 DOM 事件的沙箱中运行。如果你想在flash中触发鼠标事件,你不能用DOM元素来掩盖它。如果你无法访问 Flash 电影的源代码,你就无法建立通往 JS 世界的“桥梁”。

我认为你没有双赢的局面。

于 2008-10-14T07:28:05.707 回答