虽然在HTML中嵌入SWF并不太难,但是对于不同的浏览器存在一些细微之处,检测是否安装了Flash等.
为了启用AJAX,您可以使用标准的代码块来节省处理所有情况的麻烦……是否有类似的“参考实现”来嵌入覆盖所有基础的SWF?
为了启用AJAX,您可以使用标准的代码块来节省处理所有情况的麻烦……是否有类似的“参考实现”来嵌入覆盖所有基础的SWF?
解决方法
有标准吗?可悲的是没有. Flash嵌入方法的理想要点是:
>现代浏览器兼容
> IE兼容
>古代浏览器兼容
>符合标准
>在IE中支持流式Flash(在整个文件下载之前播放)
>不要重复自己
>允许后备内容
>没有JavaScript依赖
但是没有一堆标记可以满足所有这些要点.第6点不可能完全实现,但有些解决方案比其他解决方案更糟糕.
关于最简单的标记,您可以使用经典的Flash Satay文章中概述的版本:
<object type="application/x-shockwave-flash" data="file.swf" width="x" height="y"> <param name="movie" value="file.swf" /> (Non-Flash content here) </object>
ALA文章抱怨说,如果没有安装,该版本将不会提示用户下载Flash;我个人认为这是一个加分点.但它仍然在第3点和第5点失败.第5点可能或可能不重要:如果你的Flash文件是一个简单的应用程序,媒体播放器或加载器存根它根本没关系,但如果它是一个大动画,它可能是不幸的.
也许第3点不再重要;这些天没有人真正使用Netscape 4或IE4.但如果它对你有用,你需要老式的嵌入式标签.现代浏览器也支持这一点,这意味着您可以将ActiveX方法用于外部对象,因此您可以在IE中进行流式处理:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="x" height="y"> <param name="movie" value="file.swf" /> <embed type="application/x-shockwave-flash" src="file.swf" width="x" height="y" /> </object>
这是嵌入Flash的“传统”方法.它在第4点和第7点失败,在第6点稍差.
像SWFObject这样的库使用的第三种方法是使用JavaScript来选择在当前浏览器上实例化Flash的最佳方法.这可以达到以上所有要点,当然,除了8.有些库通过包括静态对象标记,第6点的交易点8提供了缓解这一点的方法.