Events 了解JavaScript滚动&;iFrames

Events 了解JavaScript滚动&;iFrames,events,dom,scroll,facebook-canvas,Events,Dom,Scroll,Facebook Canvas,问题 我有一个Flash SWF被加载到一个PHP页面中,然后被加载到Facebook画布中。FB页面的右侧广告区域中有内容,无论我的游戏内容有多高,都会创建一个垂直滚动条。我的游戏的画布具有流动的高度,以便完全填充画布的内容区域 我的游戏中有一个由鼠标滚轮触发的缩放功能 当使用鼠标滚轮(放大我的游戏)时,浏览器也会使用鼠标滚轮滚动内容。所以我得到了一个同步的缩放/滚动效果,至少可以说这是不受欢迎的 问题 我知道FB应用程序iframe中的my game内容不能直接点击应用程序html页面。因此

问题

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

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

当使用鼠标滚轮(放大我的游戏)时,浏览器也会使用鼠标滚轮滚动内容。所以我得到了一个同步的缩放/滚动效果,至少可以说这是不受欢迎的

问题

我知道FB应用程序iframe中的my game内容不能直接点击应用程序html页面。因此,试图在FB页面上设置属性是毫无意义的。但我在想,有没有办法在我的游戏内容上捕捉到一个滚动事件,并阻止它进入包装页面

我不太了解DOM,不知道这是否可能。我像一个Flash开发者一样思考,我们可以阻止事件传播。我只是不知道scroll事件将从哪个方向或哪个DOM元素发起。

好的,我解决了这个问题(我想)

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

我将代码添加到我的content div中,从而监听mouseweel事件。然后我取消该事件并阻止它传播到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>

函数init()
{
//window.addEventListener('scroll',listener,false);
}
函数onScrollHandler(事件)
{
event.preventDefault();
event.stopPropagation();
//警报(“滚动”);
}
内容区

只是一个更新—这不是一个完整的解决方案。为了实现这一点,您必须通过外部接口调用手动将取消的js事件传递到SWF中,然后您可以使用滚动所需的属性重新创建as3事件(通常仅滚动增量即可)。