问题描述
|
我有一个网页,用户可以在其中玩Flash游戏。现在,我们对页面进行了一些更改,该页面要求将游戏嵌入到“ 0”或“ 1”中,以便我们可以在Flash游戏的顶部显示HTML元素。问题在于,如果用户按下向上/向下箭头键,则在Internet Explorer(所有版本)中,整个页面都会滚动。我已经尝试了所有我能想到的东西,并且花了整整一天的时间寻找成功的解决方案。
到目前为止,我已经尝试将游戏放入iframe中,并尝试使用JS禁用上/下键,但这些都不能解决我的问题。
要求是:wmode必须为
transparent
或opaque
,并且我无法修改Flash游戏。
解决方法
在Flash中使用
wmode=transparent
时,防止滚动的唯一方法是防止使用箭头键滚动整个页面。此页面总结得最好。
基本上,当“ 2”模式处于活动状态时,IE中的键盘事件会传播到浏览器。我不知道如何防止滚动(未经测试),但是您基本上必须防止全局键盘滚动。
本讨论重点介绍了IE8的一种可能的解决方法,并在此处使用jQuery的实现示例。我现在没有IE的副本,但可能值得尝试。
但是,由于AFAIK,Flash中的游戏通常在ѭ0时不能很好地工作,因为可以在没有用户交互的情况下窃取焦点。最好的办法是重新整理页面,以免Flash带有HTML叠加层(即使YouTube避免在页面上设置transparent
,并且他们拥有全部内容)。
, 在拦截任何关键动作之前,用户需要先将Flash影片聚焦。实际上,这是一种很好的行为,不应更改。
最好以某种方式要求用户自动对电影进行对焦,这可能是一个好主意,方法是在其上放一些他们首先需要单击的开始按钮。然后,所有关键操作都应发送到Flash。
, 如果可以的话,一些JS魔术怎么样?
http://api.jquery.com/keypress/
http://api.jquery.com/event.preventDefault/
在对象/嵌入标签上注册KeyPress事件处理程序。假设您有ID为#flashobj的Flash对象
$(\'#flashobj \')。keypress(function(event){event.preventDefault();});
或者,更棘手的是,如果无法在Flash对象/嵌入上进行绑定,则可以在整个窗口上绑定按键,然后检查以下内容:
如果(event.target.tagName.toLower()== \“ object \”)...
里程可能会有所不同,因为我记得它event.target不是很可靠...
希望flash能够捕获键盘事件,并且页面将忽略它。我知道您说过您尝试过,但是您的方法可能有所不同(我建议了两种截然不同的方法,一种可能有效)
, 似乎根本无法解决此问题。我们只需要接受一个事实,即HTML内容(在我们的案例中为FB,如聊天)将隐藏在Flash游戏之后。
但我仍然希望有人能证明我错了:)