26

Flash输入文本内中文乱码

类别: Flash\Ria鼠标炸弹 @ 2009.09.26 10:39 已阅4,669次
标签: , , , ,

上次遇到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,想其他办法强制帧频去……

本文对您有用吗? 何不留下评论继续交流, 或者在您的博客上引用本文继续探讨.
您可以订阅读者对本文的回应或者订阅本博客以在您的阅读器中自动获取更新.

本文居然还有同伙!有兴趣不?

才 14 条评论 - “Flash输入文本内中文乱码”

  1. Hobo Windows other version Firefox 3.5.3 说:

    没遇到过这类问题呢呵呵

    [回复]

  2. backer Windows Server 2003 Google Chrome 4.0.249.11 说:

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

    [回复]

  3. backer Windows Server 2003 Google Chrome 4.0.249.11 说:

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

    [回复]

  4. 郭海燕 Windows XP Internet Explorer 7.0 说:

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

    [回复]

    鼠标炸弹 Windows Vista Firefox 3.5.5

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

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

    [回复]

  5. penpen Windows other version Firefox 3.6 说:

    不错,学到了 多谢

    [回复]

  6. 小武 Windows XP Internet Explorer 7.0 说:

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

    [回复]

  7. SK Windows XP Google Chrome 4.1.249.1045 说:

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

    [回复]

    鼠标炸弹 Windows Vista Google Chrome 4.1.249.1064

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

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

    [回复]

    SK Windows XP Google Chrome 4.1.249.1045

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

    [回复]

    鼠标炸弹 Windows Vista Google Chrome 4.1.249.1064

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

  8. SK Windows XP Google Chrome 4.1.249.1045 说:

    阿~~~原来如此~~~~~感谢高手帮助~~~~

    [回复]

  9. 袁启勋 Windows Server 2003 Firefox 3.6.3 说:

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

    [回复]

    鼠标炸弹 Windows Vista Google Chrome 4.1.249.1064

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

    [回复]

您再来一条评论吧?