使用WMODE =“window”时使用JS捕获Flash插件上的右键单击事件

时间:2009-05-26 05:48:19

标签: javascript flex browser flash

我正在为Flash应用程序使用自定义右键单击上下文菜单(覆盖默认的adobe菜单)。对于这个Uza的右键点击解决方案(http://www.uza.lt/blog/2007/08/solved-right-click-in-as3)效果很好。

但是,Flash播放器插件(适用于Firefox / Chrome等)有一个错误,当它使用WMode嵌入html时会破坏国际字符的使用。 WMode =“widnow”有效。

http://bugs.adobe.com/jira/browse/FP-501

这里可以更好地看待这个问题 -

http://www.5etdemi.com/blog/archives/2005/06/firefox-wmodetransparent-is-completely-screwy-and-breaks-textfields/

问题

我需要将从Flash播放器插件触发的右键单击事件捕获到Web浏览器容器,而不在html embed标记上使用WMode(即.WMode =“window”)

有没有人对此有所了解?

1 个答案:

答案 0 :(得分:0)

右键单击JS hack在不透明和透明模式下工作,因为浏览器在其自己的显示树中呈现Flash。在此模式下,浏览器接收鼠标事件,允许它们由JS处理,然后将它们传递给Flash插件。 (这就是为什么在透明模式下输入带有重音符号或非拉丁字符的错误的原因,因为有些浏览器没有正确地传递它们。)

在其他窗口模式中,Flash对象不是以相同方式的html DOM的一部分。相反,它只是给出了一个显示矩形,可以直接绘制它。它还直接从操作系统获取键盘和鼠标事件,因此我不希望任何JS上下文菜单在任何主流浏览器中都可以使用。