问题
我将Flash SWF加载到PHP页面中,然后将其加载到Facebook画布中。 FB页面在右侧广告区域中包含内容,无论我的游戏内容高度如何,都会创建垂直滚动条。我的游戏画布具有流畅的高度,以便完全填充画布的内容区域
我的游戏中有一个由鼠标滚轮触发的缩放功能。
当使用鼠标滚轮(放大我的游戏)时,浏览器也会选择滚动内容。所以我正在进行同步缩放/滚动效果,至少可以说这是不可取的。
问题
我知道我在FB应用的iframe中的游戏内容无法直接点击App html页面。因此,尝试在FB页面上设置属性毫无意义。但我在想,有没有办法在我的游戏内容上捕捉滚动事件并阻止它到达包装FB页面?
我不太了解DOM,不知道这是否可行。我想像Flash开发人员一样,我们可以阻止事件传播。我只是不知道滚动事件的起源方向或来自哪个DOM元素。
答案 0 :(得分:0)
好的,我解决了这个问题(我想)...
我无法停止滚动FB应用程序的原因是因为如果画布是流畅的,那么内容不会溢出?而不是触发滚动事件。但它会触发鼠标滚轮事件,这是通过鼠标生成滚动事件的必要步骤。
我在我的内容div中添加了代码,我在那里收听mousewheel事件。然后我取消了那个事件&阻止它传播到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>