最简单的兼容各种浏览器的FLASH播放代码
2009年09月1日各种浏览器的互不兼容太令人头疼了,就连播放一个flash swf文件也可能遇到各种各样的问题。这里整理一下,供参考。
这里假设要播放的swf文件是“test.swf”。
Flash自身建议的代码是:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" id="test" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="test.swf" /> <param name="loop" value="false" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="test.swf" loop="false" menu="false" quality="high" bgcolor="#ffffff" width="550" height="400" name="test" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_cn" /> </object>
其中有个令人厌恶的“embed”标签,主要是针对FireFox的。也有人为了不使用“embed”就改用“[if !IE]”来做判断,代码如下:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" id="test" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="test.swf" /> <param name="loop" value="false" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="test.swf" width="550" height="400" id="test1"> </object> <!--<![endif]--> </object>
像这种代码也好看不到哪里去。以上两种代码还都存在一个问题,就是用到了两个对象名,一个对象名是给IE用的,另一个对象名是给FireFox用的。如果要用“getElementById”之类的函数来操作swf对象时,在不同的浏览器下就要采用不同的对象名。这对编写javascript带来不便。
为此我们简化出了如下的代码:
<object type="application/x-shockwave-flash" data="test.swf" width="550" height="400" id="test"> <param name="movie" value="test.swf" /> </object>
这里只用了一个对象名,javascript处理起来就方便多了。该代码在IE、FireFox、Chrome下测试都没有什么问题。
不错,相当实用