前些天为偶的首页添加了一个FLASH广告.本来是一件很简单的事情,但没想到却遇到了很多问题.不管怎么试都首页就是显示不出那个SWF.总是显示未加载SWF.弄得郁闷死了.最后才发现原来要用绝对路径才行.因为我的FLASH文件放在主题文件夹内.在这要注意一下.FLASH读取XML的路径也要设为绝对路径才行哦.在这个过种中.偶也试了很多种插入SWF的方法.今天在这作下总结目前有哪些插入方法.它们有什么特点.
一、传统的方法
<param name="movie" value="mymovie.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="mymovie.swf" quality="high" bgcolor="#ffffff" width="550"
height="400" name="mymovie" align="middle" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
这是目前最普通的方法了.这种方法是使用 object 和 embed 标签来嵌入,细心的会发现,object 的很多参数和 embed 里面的很多属性是重复的,为什么这样做?为了浏览器兼容性,有的浏览器支持 object,有的支持 embed,这也是为什么要修改 Flash 的参数时两个地方都要改的原因。这种方法最大限度的保证了 Flash 的功能,没有兼容性问题。但是它现在也有些缺点了:
- 无法通过验证,由于为了兼容性而嵌入的 embed 标签是不符合 W3C 的规范的。
- 在页面中会有一个虚框,需要用户点击一次才能正常交互。
- 没有 Flash 版本检测。
二、只用 object 的方法
<param name="movie" value="c.swf?path=movie.swf" />
<img src="noflash.gif" width="200" height="100" alt="" />
</object>
这方法没 embed 了,可以通过验证,是标准的嵌入 Flash 的方法,浏览器兼容性也不错,看起来几乎完美,不过还是有问题的:
- 需要一个 holder swf 来加载你的目标 swf 以保证 IE 中的 stream 能力,如果你需要通过 flashvars 来传参,或者和页面的 JS 交互,会很麻烦。
- 同上面第二点,ActiveX的虚框问题。
- 继续同上没有版本检测
三、用JS嵌入的方法
在这里推荐大家用SWFObject ,这种方法的优点:
- IE中没有讨厌的虚框问题了。
- 提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。
- 易于使用,只要在页面头加载一个 .js 文件,然后 HTML 写一个容器,里面放普通的文本或图片(用于无法显示 Flash 时显示),最后用脚本来替换这个元素里面的内容为 Flash。
- 可以通过验证——当然这个不是重点
现阶段用 JS 嵌入 Flash 是最完美的方法,在这简单说下它的用法:
下载它的.js文件,在这里: http://code.google.com/p/swfobject/(目前的最新版本是2.1)
在你的 HTML 页面头部
区嵌入这个脚本文件:在你的 HTML 中写一个用来放 Flash 的容器,比如div,并随便给一个 id 比如 flashcontent。然后在里面放上你的替换内容。
使用脚本替换这个内容:
swfobject.embedSWF("index_ad.swf", "index_ad", "524", "120", "9.0.0", "expressInstall.swf");
//参数意思: 地址,Flash 的 id(不是容器的 id),宽,高,版本需求,背景颜色
so.write("flashcontent");
</script>
这脚本可以写在 HTML 中也可以写在外部 .js 文件中。
OK,就介绍到这了。
2008/11/29
我站上的flash
在FF下老有“不建议使用 getBoxObjectFor() 。 请使用 element.getBoundingClientRect()。”这样的报错,不知道怎么解决
2008/11/22
侧边栏怎么掉center最下边去了,就现在。
2008/11/23
就这一篇日志的侧边栏掉下去了,很奇怪的问题。暂时没去研究它…
2008/11/20
我也是直接拿来即用…米想过其他-.- 惭愧
2008/11/12
很详细啊,一直都是稀里糊涂就弄上了,重没总结过