搞了几个小时后,才发现,之前走的路是错的。
今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了,
一搞就整整搞了一个下午。
我记得之前我用Flash8的时候没有遇到过这样的问题。
我的程序大概是这样,我用Flash制作了一个菜单,默认情况下,打开网页时,这个菜单隐藏,当鼠标放在一个小图标上后,这个菜单显示出来,并且会根据当前的网页数据情况,显示菜单中的几项,同时隐藏几项不需要显示的菜单项。
我在Flash中使用ExternalInterface.addCallback 注册了一个方法名叫:setMenuItemVisible(b:Boolean)
打算在网页中的javascript中调用。
可谁知程序写好后,在IE浏览器下运行一切正常,但在Firefox上老是提示错误:
无法在javascript中调用 setMenuItemVisible() 方法。
我开始到百度去搜索,找了一个多小时后,终于找到了一篇文件:
http://www.coolcode.cn/show-291-1.html
我把这篇内容在我的百度空间收藏了一下:
http://hi.baidu.com/personnel/blog/item/8c04cd119effe919b8127b47.html
原来因为浏览器的原因,如果在IE以外的大多数浏览器上执行javascript调用Flash中的函数时,一般要在 window.onload=function(){载入Flash}
不然,在Flash中注册的一些对外的函数将无法在javascript中调用。
本来以为到这里原因找到了,可是接下来又遇到了一个非常头痛的问题。
因为我的Flash是先隐藏,在javascript触发事件后,才显示,我使用的是
flash.style.display="none";
flash.style.display="";
在Firefox上测试的时候发现,当在这显示和隐藏两种状态下转换的时候,每次Flash都会重新载入一次,真晕!
后来又到百度搜索了一下,找到了这么一篇文章,现在我收藏了一下:
http://hi.baidu.com/personnel/blog/item/a8f40fb3025decaed8335a43.html
最终重写了Flash代码,因为之前的代码逻辑上在Firefox上不是好办法。
2009-08-12