:::: 菜单 ::::

Flash输入文本内中文乱码

上次遇到Flash在IE下的NavigateToURL被屏蔽的问题,解决方法可以用wmode的设置。

昨天夜里又遇到wmode的另外一个问题:
flash里的输入文本框(CS4里纯正的TextField,type=’input’),放到网页后在火狐测试无法正确输入中文,输入法可以使用,但打进去都变乱码。

我的环境是
Firefox 3.5.3 + Flashplayer Plugin 10.0.32.18 debug版本。
IE8 + Flashplayer ActiveX 10.0.32.18 release版本。

一开始我怀疑是swf的问题,可是用IE打开看又很正常。然后又找了独立版的Flashplayer9和独立版的Flashplayer10运行都不会出现乱码。唯独火狐网页里测试有问题。

然后又怀疑是Flash CS4 的某些新功能导致发布的文件在某些情况下不可用,逐一发布了fp10、fp9、fp8三个版本的swf测试,问题依旧。

一时找不到原因,索性把swf直接拖到Firefox里看。这一拖不要紧啊,发现原因了——直接用火狐打开居然不乱码!这说明肯定是网页中放置flash的设置导致。

最后查出来问题所在: 火狐 && Flashplayer 10 Plugin && wmode==’opaque’的情况会乱码——火狐下的Flashplayer 10 Plugin运行非窗口模式的swf会有中文输入乱码的问题。(也许是Adobe的bug?)

解决方案: 还是得把wmode改成window……
算了,我认了,window就window,想其他办法强制帧频去……

延伸阅读


  1. 非常感谢 遇到了这个问题 已经解决了!

  2. 补充一下 wmode值为 transparent也有这个问题

  3. 非常感谢,解决了问题,不过wmode改成window会不会有什么影响?

  4. @郭海燕:
    几种wmode的不同:
    Window是默认的,窗口模式,吃CPU不严重
    Transparent透明无窗口模式
    Opaque不透明无窗口模式
    效率最高的是window模式
    透明用transparent
    而需要动态交互(比如js)或者window模式不稳定的情况下用opaque
    Window和transparent在ie6的iframe下拖动会出现花屏——个人经验。
    还有一点,无窗口模式消耗资源大,但是能保证帧频。

    改成window主要就是丧失了强制帧频的效果,其他没啥。

  5. opaque模式比windows有更大的问题,flash会被层切掉,而且无法触发鼠标事件

  6. 高人,小弟遇到GetURL命令上传到网站后就是小效的问题,怎么解决阿?
    我用的是AS2写的GetURL,然后发布后弹出一个flash player安全性的对话框让我上网去设置安全性,我机器上浏览器用的是player10的版本,是不是意味着9以后的版本都因为安全性问题而屏蔽了GetURL???那么我用flash做的网页不影响到部分9以上版本访客的正常浏览了???怎么解决阿???

  7. Adobe对安全性的策略都是合理的,要解决问题,需要了解安全策略,还有根据你的getURL是如何使用的(比如Adobe会把非用户事件触发的跳转、文件上传等功能禁止)作出修改。
    在发布设置中可以选择“只访问网络”“只访问本地”,这其实就是开放给你的swf的安全设置。
    此外,如果你的flash发布到别人的网站(如Qzone、baidu空间),是无法自己通过HTML插入flash的,这样的网站一般都会通过flashplayer插件提供的安全设置参数屏蔽掉你的站外通信。

    安全沙箱方面的内容不是一两句话可以讲清楚,你可以查看http://www.infoq.com/cn/presentations/liwenlei-flashsandbox 这个视频+幻灯深入浅出讲解了Flash的安全沙箱。

  8. 谢谢高人指点迷津,我试过设置“只访问网络”,正如您所说,我发布到微软的small bussiness的网站,通过插入一个html模板,加载我的swf的http地址,结果是点击后没有任何反应,不仅如此,我在本地测试发布flash+html,打开html文件点flash,getURL也是没有任何反应(第一次弹出安全性,之后就不再出现了),是不是就意味着这个问题是没有办法解决的,其他用户想正常浏览我的flash必须通过繁琐的安全设置??

  9. @SK, 在别人网站上发布flash就会有这样的安全限制(大网站不限制的话会被利用来做很多邪恶的事情,比如我在Qzone上传一个swf文件,让打开我Qzone的人全部直接跳转到某广告网站)。
    本地测试的话,你可以把开发目录加入FP信任域,QQ的客户端就很邪恶地自动把自己的一些东西加入了信任域,注意:本地测试和发布后的安全沙箱不同,所以测试和发布后是两码事。

  10. 楼主,你好,我遇到了类似的问题,我使用opaque模式后,flex页面滚动,将出现花屏,去掉就好了。但是我是嵌入jsp页面的,我不用opaque模式,将导致swf遮挡jsp下拉菜单的问题,不知道你遇到过这个问题没有?

  11. 遇到过,而且挡住页面的菜单是无解的,参阅CS5官方网站,在某些浏览器里也被挡住菜单。
    你得尽量避免设计浮动在菜单区域上方的flash。