当闪光灯具有焦点时,防止在IE中滚动

时间:2011-05-30 13:38:45

标签: javascript flash

我有一个用户可以玩Flash游戏的网页。我们现在对页面进行一些更改,要求将游戏嵌入wmode=transparentwmode=opaque,以便我们可以在Flash游戏的顶部显示HTML元素。问题是,在Internet Explorer(所有版本)中,如果用户按下向上/向下箭头键,则整个页面会滚动。我已经尝试了所有我能想到的东西,并且我花了一整天时间寻找解决方案而没有成功。

到目前为止,我已经尝试将游戏放入iframe中,我尝试用JS禁用向上/向下键,但没有一个能解决我的问题。

要求是:wmode必须是transparentopaque而我无法修改Flash游戏。

4 个答案:

答案 0 :(得分:1)

在Flash中使用wmode=transparent时阻止滚动的唯一方法是阻止使用整个页面的箭头键滚动。 This page最好地总结了它。

基本上,当transparent模式处于活动状态时,IE中的键盘事件会传播到浏览器;我不知道如何防止滚动(尚未测试),但你基本上必须全局阻止键盘滚动。

This discussion强调了IE8的可能解决方法,以及使用jQuery here实现的示例。我现在没有IE的副本,但可能值得一试。

但是,在AFAIK中,Flash中的游戏通常与wmode=transparent的效果不佳,因为无需用户交互就可以窃取焦点。您最好的选择是重新编辑页面,以免要求Flash使用HTML叠加(即使YouTube避免在其页面上设置transparent,并且他们拥有整个内容。)

答案 1 :(得分:0)

在拦截任何关键操作之前,用户需要先关注Flash影片。这实际上是一种很好的行为,不应该改变。

以某种方式要求用户自愿聚焦电影是个好主意,也许可以在它上面放一个他们需要先点击的开始按钮。然后应将所有关键操作发送到Flash。

答案 2 :(得分:0)

一些JS魔法怎么样,如果有效的话。

http://api.jquery.com/keypress/

http://api.jquery.com/event.preventDefault/

在object / embed标签上注册KeyPress事件处理程序。假设你有一个id为#flashobj

的flash对象

$('#flashobj')。keypress(function(event){event.preventDefault();});

或者,更棘手的是,如果flash对象/ embed上的绑定不起作用,你可以在整个窗口绑定按键,并检查以下内容:

if(event.target.tagName.toLower()==“object”)...

里程可能会有所不同,因为我记得event.target不太可靠......

希望flash会捕获键盘事件,页面会忽略它。我知道你说你试过了,但你的方法可能有所不同(我提出了两种截然不同的方法,一种可能有用)

答案 3 :(得分:0)

似乎没有办法解决这个问题。我们将不得不接受这样的事实:HTML内容(我们的情况下像聊天这样的FB)会隐藏在Flash游戏背后。

但我仍然希望有人证明我错了:)