Flex嵌入到HTML后切换焦点不能输入中文的解决方案

快要下班时,听康康一言,又突发奇想了若干关键词百度了下,找到了vipliyaohua的一篇博文。经过试验,困扰了已久,真是郁闷郁闷郁闷加憋屈至极的问题终于得以解决。

博文地址:Flex嵌入到HTML中切换焦点不能输入中文和遮盖DIV的问题

作者指出了两个问题,解决了2个问题:

  1. div被flash嵌入对象遮挡,这个问题在实现div下拉式菜单或浮动元素时经常遇到。关键方法是设置wmode=“transparent”或”opaque”。此非重点。
  2. flash嵌入html后,html元素不能正常使用中文输入法。之前找了很久的原因,把问题锁定到了IE下flash+html的某个bug(Firefox下正常),但一直没能解决。

引用 vipliyaohua的问题描述:

我们突然发现当焦点置于Flash后再切换到HTML元素中 如HTML的INPUT输入框中,不管怎么切换我们的输入法,中文就是出不来。

经我反复测试,基本如上描述,当然操作上并不绝对。比如:有时候来回变换焦点后输入法并不会被直接禁用,会有延时。至于输入法,是可以成功切换,但是中文输入操作被禁用。

当然,这不影响解决方案的有效性:在鼠标移开flash对象时强制设置输入法功能开启。以下参考原文中提供的事件绑定例子。