遇到一个问题:XHTML不支持embed标签,但是如果不用embed标签,那么在firefox中flash播放器就不会被调用。 查资料得知object标签符合XHTML规范,那么能不能用object标签在firefox中替代embed来调用flash播放器呢?
经过测验下面代码能在IE和Firefox中正常调用Flash播放器:
<
object
type
="application/x-shockwave-flash"
data ="layoutExampleApp.swf" >
< param name ="movie" value ="layoutExampleApp.swf" />
</ object >
data ="layoutExampleApp.swf" >
< param name ="movie" value ="layoutExampleApp.swf" />
</ object >
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"属性要去掉。很明显他是在调用flash的com组件,非microsoft平台肯定不支持,取而代之的是type属性,来指定object的数据类型。firefox用data属性来定位flash文件,IE用param来定位文件。问题解决。
时间紧张,书写简单,尽请见谅。
embed标签是网景浏览器特有的,用来在网页中调用插件和播放器的。如果要编写规范的程序,那么肯定要对embed说不。
2007-04-05:补充说明一下,经过测验,上述的方法虽然能播放swf文件,但是存在很多问题。目前我发现的bug如下:
1.IE 中调用大个的swf有内存不能被正确回收。IEbug
2.IE+flex在frameset中,如果flex程序使用了ExtenalInterface.call的话,在关闭IE后会报一个错误,iframe同理。IEbug
3.Firefox+flex在frameset中tree的changedata事件如果使用ExtenalInterface.call会出现tree控件被锁死。
上述方法属于画蛇添足,没有必要这么做。
建议采取第三方的js脚本来插入swf,例如如果插入flash8的swf文件建议使用
swfobject,如果是flex那么使用flexbuilder自带的AC_OETags.js。这样插入的swf文件还能修复一些flashplayer的bug和IE的一些限制。例如IE6对ActiveX控件的限制,必须点击一下swf文件才能激活flash动画。