2

我有一个 HTML 文档,其中包含一个 Flash 对象和一个绝对定位的 HTML 元素。如果我将 HTML 元素的opacityCSS 属性设置为小于 1 的任何值,则 Flash 对象(实际上已被覆盖)接收鼠标事件。使用纯 HTML 元素无法重现此问题。此外,Flash 只接收悬停事件,因此我无法单击图层下方。

我把这个问题的演示放到网上。

我在 Mac 和 Windows 的 Firefox 3.6、Safari 4.0 和 Chrome 5.0 中都得到了这种行为。已安装 Flash 插件版本 10。

它是错误还是正常预期的行为?如果是后者,那么当Flash被半透明层覆盖时,如何防止Flash接收事件?

4

5 回答 5

1

非常有趣的问题,我进行了广泛搜索,只找到了 Actionscript 解决方案。我什至在本地复制了这个页面并尝试在闪光灯和面板之间放置一堵砖墙,但闪光灯总是会响应鼠标事件。不幸的是,我唯一的解决方案是在面板出现在其上方时用图像移动/替换闪光灯,我希望您需要一个覆盖整个地图的面板。如果您只是有一些导航可以在某些闪光灯上滑动,那么用图像替换它可能会被证明是回避的。这是使用 jquery 的代码,这是我能想到的最好的代码,尽管当您从面板中出来时会有些眨眼。

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $(".panel").mouseover(function() {
        $("#google-visualization-geomap-0").css({'position' : 'absolute', 'left' : '-999em'});
    });
    $(".panel").mouseout(function() {
        $("#google-visualization-geomap-0").css({'position' : 'static', 'left' : '0'});
    });
});
</script>

希望这个对你有帮助。

于 2010-04-02T21:30:12.010 回答
0

也许它应该被认为是一个浏览器错误。

至于带有 Flash Player 10.1 r53 的 Google Chrome 5.0.375.99 和 Apple Safari 5.0 (6533.16),我不再面临这个问题。我得到了预期的行为,即半透明层后面的 Flash 对象不响应鼠标事件。

于 2010-07-21T10:11:06.363 回答
0

Event.MOUSE_LEAVE在舞台上聆听。每当鼠标离开舞台时,这将被触发(将鼠标悬停在另一个 html 元素上应该会触发它)。然后,您可以从任何不应该拥有的悬停状态中删除它。

于 2010-04-01T15:51:57.837 回答
0

重力一,

我遇到了与我编程的闪存片重叠的下拉菜单相同的问题。听起来您找到了一些 ActionScript 解决方案?任何输入将不胜感激。

我测试了Event.MOUSE_LEAVE监听器,不幸的是,它无法区分鼠标直接在 swf 上还是在菜单上时鼠标在 swf 上。

谢谢!


更新:

所以我通过强制我的Flash片段在执行翻转效果之前检查一个javscript变量来解决这个问题。

要了解有关 swf/js 通信的更多信息,请查看此处: 链接文本

或者看看我是如何应用它的,看看下面:

动作脚本:

import flash.external.ExternalInterface;
private var navOver:Boolean;
private function onPackOver(event:MouseEvent){
    //Establish if Nav is on by grabbing js variable.
    navOver = ExternalInterface.call("navOnStatus");
    if (!navOver){
    // mouse over effects
    }
}

Javascript:

//navOn Variable is changed to true when mouse if over the nav, and false when it is not;
var navOn = false;
function navOnStatus(){
return navOn;
}
于 2010-04-15T21:20:01.153 回答
-1

从我从您的演示中可以看出,Flash 对象仅在鼠标进入左侧面板时保留悬停事件-一旦在左侧面板上方,Flash 对象不再接收悬停事件,否则“巴西”弹出- up,例如,会继续跟随鼠标。该行为似乎是因为鼠标没有正确“离开” flash 对象。如果您不介意我问,为什么您的地图被左侧面板部分遮挡了?

于 2010-03-27T22:56:39.913 回答