flash和javascript交互时 出现“对象不支持此属性或方法”错误的解决方法
在 Javascript 控制 Flash FLV视频播放器 --国外开源 这篇文章介绍了JW_FLV_Player这个开源播放器,在使用的过程中还是遇到一些问题的。比如在申明flash object时,如果播放器嵌套在form里面,就立即需要用 player_id保存这个flash对象,不然swf执行注册回调函数的时候找不到player_id。因为swf是查找全局的player_id变量,放到form里面自然就找不到了。会出现“player_id”未定义的错误。
如果事先想把包含flash的图层隐藏起来,在执行player_id的一些方法时就会出现“对象不支持此属性或方法”。这个问题困扰了我很久。图层隐藏与否player_id变量看起来都是一样的,为什么一个就有方法一个没有?后来利用写div的innerHTML方式,也是出现这种情况。冷静分析了一下,想想原理,终于发现是由于swf没有执行造成的。object对象虽然创建了,但是里面的swf并没有执行,而在swf中对player_id注册了一些回调函数。所以就出现了“对象不支持此属性或方法”。
总结推断一下,div隐藏了,里面的object虽然已经创建,但是swf并没有执行。用innerHTML写入object,虽然object已经存在,但swf也没有来的及执行。解决方法就是在写入innerHTML后,间隔一段时间再执行以后的操作。使用setTimeOut()。
如果事先想把包含flash的图层隐藏起来,在执行player_id的一些方法时就会出现“对象不支持此属性或方法”。这个问题困扰了我很久。图层隐藏与否player_id变量看起来都是一样的,为什么一个就有方法一个没有?后来利用写div的innerHTML方式,也是出现这种情况。冷静分析了一下,想想原理,终于发现是由于swf没有执行造成的。object对象虽然创建了,但是里面的swf并没有执行,而在swf中对player_id注册了一些回调函数。所以就出现了“对象不支持此属性或方法”。
总结推断一下,div隐藏了,里面的object虽然已经创建,但是swf并没有执行。用innerHTML写入object,虽然object已经存在,但swf也没有来的及执行。解决方法就是在写入innerHTML后,间隔一段时间再执行以后的操作。使用setTimeOut()。
