JS和FLASH交互的一个注意点
在js调用flash抛出的接口函数时,在flash play 10.0.x.x下会报错,关键代码在(xxxx根据实际情况不同):
try { __flash__toXML(xxxx()) ; } catch (e) { “
关于Flash怎么实现和js通信的,可以参看这里ExternalInterface 与 JavaScript。
步步排查,最终定位到问题所在:
必须要向DOM树上存在的节点,将flash innerHTML进去才行,否则在flash player10.0下js不能调用到flash抛出的接口函数。
之前的做法是先将flash inner到一个js创建的节点中,然后再把这个节点append到页面中。这样引发在flash player下js不能和flash通信的问题。
Plugin Switcher
这里介绍一个工具:Plugin Switcher,用于切换各个flash player的版本。省得到处找各个版本的flash player了,还省得手动卸载和安装了。
Plugin Switcher下载地址:http://www.pluginswitcher.de/download/index.html
手动安装低版本的flash player
如果之前安装过flash player 10.1.x.x的版本,卸载后再安装比它低的版本,提示“正尝试安装的 Adobe(R) Flash(R) Player 版本不是最新的版本。请访问 http://www.adobe.com/go/getflashplayer 以获取最新、最安全的版本。”。如下图:
如果不使用工具,手动办法如下:
卸载flash player后,打开注册表,找到 HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\SafeVersions, 删除右侧相关版本号内容,或者全部删除,再安装低版本flash player。如下图: