JS插入Flash代码的几个问题
昨晚在《读者》上看到一篇文章,蛮好的,貌似叫《好机会,坏机会》,里边有一句话:
今日的社会,人人都在盼望机会——出名的机会,发财的机会,升官的机会,深造的机会。。。但你有没有想过,如果机会真的降临到你头上,你以及你身边的人的能力、品质、心胸、定力、学识,能与这个机会相匹配吗?
感触很深,想起《天龙八部》里的扫地僧,他给萧远山和慕容博常偷看的武功秘籍旁边放了该看的经书,但是,两个人都没发现,或者说根本不屑去看,所以,他们都没有什么好的造化,自身的修养不行,武功也很难再上一个高度。还记得《我们生活的年代》这个电视剧,悲剧呀。。。真的很悲,人在20w和200w面前表现出了两种截然不同的态度,在利益面前你会怎么选择呢?有些中500万彩票的人,没有去领奖,为什么呢?我想是他不知道该怎么去用,更不知道这500万会给自己的人生、家庭带来什么伤害,他还没有接受的心理。我从来没买过彩票,并不是我不想中500万,我也想,但是我现在真的没有能力去控制自己的欲望,没有能力去用好那笔钱。07年毕业之后我没接过任何单子,回绝了很多朋友的合作,并不是我不想赚钱、不需要钱,我也想买好车,买大大的房子,可是我现在还不能。我不是没有欲望,我也有,但是很多时候都被我压下来了,道行太低啦,还需要修行,男人要忍,^_^不扯了,进入正题。
上周在做道具卡那一段时,在蒙层那里纠结了很长一段时间,首先是插入flash的问题,我试了innerHTML和DOM创建的方法,但是两个方法在ie下都会报错,不能正常运行,最后采用了cloneNode的方法,表现还不错,特别是在IE6下,我觉得挺满意的,效率不是很低。但是这个方法,在Firefox下边出现了问题。先来看下用Dreamweaver生成的Flash嵌入代码:
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="50" height="50">
<param name="movie" value="" />
<param name="quality" value="high" />
<param name="wmode" value="opaque" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="Scripts/expressInstall.swf" width="50" height="50">
<!--<![endif]-->
<param name="quality" value="high" />
<param name="wmode" value="opaque" />
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
因为Flash的地址是需要动态去载入的,所以在Firefox下需要改变两个地方的路径,一个是movie的路径,另一个是子object的data值,这两个都是没什么问题的,问题在于,当这个Flash隐藏后,如果再显示出来。
IE下没有任何问题,因为它没有子object,但是在Firefox就有问题了,在设置display的时候,子object会一同被设置,那么在恢复的时候当然也需要同时去恢复子object的display了,但是用object.getElementsByTagName(‘object’)[0]无法获取到子object,当时也纠结了好久,不知道是为什么,因为在克隆的时候我是通过这种方法去设置子object的值的,为什么这里不行呢?
后来alert了一下flash的type,发现在Firefox下输出的是function,而其他所有浏览器都是object,当时就很崩溃,不晓得这个是什么原因,既然是function了,当然没办法再取子object了,但是它可以设置自身的一些属性,只是无法当做一个节点去取相连的节点了,那么为什么初始的时候可以呢?是因为使用的cloneNode生成的本身就是一个节点。最后解决的办法就是给子object加了一个与父object比较相近的id去直接取到它,然后设置display。
这篇文章发布于 2009年07月20日,星期一,22:08,归类于 JavaScript。 您可以跟踪这篇文章的评论通过 RSS 2.0 feed。 您可以留下评论,或者从您的站点trackback。