2011-05-30 102 views
3

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

到目前为止,我已经尝试把游戏放在一个iframe中,我尝试禁用JS的上/下键,其中没有一个解决了我的问题。

要求是:wmode必须是transparentopaque而我不可以修改flash游戏。

+0

我希望你不投入'的wmode =透明| opaque'到你的代码。它应该是'wmode =“transparent”'或'wmode =“opaque”'当然?!条('|')表示您选择“透明”或“不透明”。 – anothershrubery 2011-05-31 08:44:59

+0

关闭课程......其中一个或另一个不是两个。 – 2011-05-31 08:49:30

+0

你是否尝试过在容器'div'元素上捕获事件,仅仅是为了窃笑?如果您可以在包含DOM元素上捕获事件,则可以取消在该处传播事件。 – 2011-05-31 10:36:26

回答

0

似乎根本就没有办法解决这个。我们只需要接受一个事实,即HTML内容(我们的例子中的FB就像聊天)会隐藏在Flash游戏后面。

但我还是希望有人证明我错了:)

+0

正确的答案是,您应该将页面上的Flash实例视为技术限制,并围绕其设计页面。 ;) – 2011-06-02 09:37:15

+0

是啊,但有时候,仅仅是不可能的:\ – 2011-06-02 10:12:51

+0

它总是可能的,除非它是由客户的特定需求。这完全是关于教育客户 - 他们已经习惯了并非所有的浏览器都能做到的事情,这只是一个重点。 – 2011-06-02 10:22:42

0

用户需要在任何关键动作被拦截之前先对焦Flash动画。这实际上是一种很好的行为,不应该改变。

以某种方式让用户自动对焦电影是一个好主意,也许可以通过在它上面放置一些开始按钮来让他们首先点击。然后,所有关键操作都应发送到Flash。

+1

闪存获得焦点,因为大多数游戏都有一个“点击这里开始”按钮(像你说的)。所以这不是问题。问题是,按键莫名其妙地“泄露”到即使闪光灯聚焦... – 2011-05-30 13:46:39

1

在Flash中使用wmode=transparent时,防止滚动的唯一方法是防止使用整个页面的箭头键进行滚动。 This page总结得最好。

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

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

但是,AFAIK在Flash中的游戏通常与wmode=transparent的效果不一样,因为在没有用户交互的情况下,焦点可能会被盗。您最好的选择是修改页面,以免Flash需要覆盖HTML(即使YouTube避免在页面上设置transparent,并且它们拥有整个内容)。

+0

可惜没有HTML覆盖不是一个选项的浏览器。我会看看你的链接,欢呼! – 2011-05-31 13:11:18

+0

嘿,我已经看到了这些链接:)也许我不得不再次去他们低谷:) – 2011-05-31 13:12:23

+0

没有这样的作品。 – 2011-06-01 12:06:44

0

一些JS魔法如果有效的话。

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

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

注册的对象/嵌入标签的按键事件处理程序。比方说,你有闪光对象与ID #flashobj

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

或者,更棘手的,如果闪存对象绑定/嵌入是行不通的,你可以在按键绑定整个窗口,并沿该线检查一番:

如果(event.target。 tagName.toLower()==“object”)...

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

希望,闪光灯将赶上键盘事件,页面会忽略它。我知道你说你尝试过,但你的做法可能是不同的(我提出了两个明显不同的方式做到这一点,一个可能的工作)

+2

它不起作用:\ – 2011-06-01 12:03:27