0

问题

我有一个 Flash SWF 被加载到一个 PHP 页面中,然后被加载到一个 Facebook 画布中。FB 页面在右侧广告区域中有内容,无论我的游戏内容的高度如何,它都会创建一个垂直滚动条。我的游戏画布具有可变高度,以便完全填充画布的内容区域

我的游戏中有一个由鼠标滚轮触发的缩放功能。

当使用鼠标滚轮(放大我的游戏)时,浏览器也会选择它来滚动内容。所以我得到了同时发生的缩放/滚动效果,至少可以说这是不可取的。

问题

我知道我在FB app的iframe中的游戏内容不能直接点击App html页面。所以试图在FB页面上设置属性是没有意义的。但我在想,有没有办法在我的游戏内容上捕捉滚动事件并阻止它到达包装 FB 页面?

我不太了解 DOM,不知道这是否可能。我像 Flash 开发人员一样思考,因为我们可以停止事件传播。我只是不知道滚动事件会从哪个方向或从哪个 DOM 元素产生。

4

1 回答 1

0

好的,我解决了这个问题(我认为)......

我无法停止滚动 FB 应用程序的原因是因为如果画布是流动的,那么内容不会溢出?并且不触发滚动事件。然而,它会触发鼠标滚轮事件,这是通过鼠标生成滚动事件的必要步骤。

我在内容 div 中添加了代码,借此监听鼠标滚轮事件。然后我取消该事件并阻止它传播给 iFrame 的所有者。

<html>
<head>
    <script type="text/javascript">
        function init () 
        {
            //window.addEventListener('scroll', listener, false);
        }

    </script>
</head>

<body onload="init()">
    <script type="text/javascript">

        function onScrollHandler(event)
        {
            event.preventDefault();
            event.stopPropagation();

            //alert("scrolling");       
        }

    </script>

    <div id="content" onmousewheel="onScrollHandler(event)" onclick="alert('click')" style="position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px; background-color:#b0c4de;">
        content area
    </div>
</body>

于 2013-04-30T15:28:13.417 回答