等待-放飞梦想

勤现在-乐将来

网页中嵌入Flash的方法总结

Await / 前端交互 / 2008/11/11 10:46 / 热度(3,130)

前些天为偶的首页添加了一个FLASH广告.本来是一件很简单的事情,但没想到却遇到了很多问题.不管怎么试都首页就是显示不出那个SWF.总是显示未加载SWF.弄得郁闷死了.最后才发现原来要用绝对路径才行.因为我的FLASH文件放在主题文件夹内.在这要注意一下.FLASH读取XML的路径也要设为绝对路径才行哦.在这个过种中.偶也试了很多种插入SWF的方法.今天在这作下总结目前有哪些插入方法.它们有什么特点.

一、传统的方法

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="400" id="Untitled-1" align="middle">
<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 的功能,没有兼容性问题。但是它现在也有些缺点了:

  1. 无法通过验证,由于为了兼容性而嵌入的 embed 标签是不符合 W3C 的规范的。
  2. 在页面中会有一个虚框,需要用户点击一次才能正常交互。
  3. 没有 Flash 版本检测。

二、只用 object 的方法

<object type="application/x-shockwave-flashdata="c.swf?path=movie.swf" width="400" height="300">
<param name=
"movie" value="c.swf?path=movie.swf" />
<img src=
"noflash.gif" width="200" height="100" alt="" />
</object>

这方法没 embed 了,可以通过验证,是标准的嵌入 Flash 的方法,浏览器兼容性也不错,看起来几乎完美,不过还是有问题的:

  1. 需要一个 holder swf 来加载你的目标 swf 以保证 IE 中的 stream 能力,如果你需要通过 flashvars 来传参,或者和页面的 JS 交互,会很麻烦。
  2. 同上面第二点,ActiveX的虚框问题。
  3. 继续同上没有版本检测

三、用JS嵌入的方法
在这里推荐大家用SWFObject ,这种方法的优点:

  1. IE中没有讨厌的虚框问题了。
  2. 提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。
  3. 易于使用,只要在页面头加载一个 .js 文件,然后 HTML 写一个容器,里面放普通的文本或图片(用于无法显示 Flash 时显示),最后用脚本来替换这个元素里面的内容为 Flash。
  4. 可以通过验证——当然这个不是重点

现阶段用 JS 嵌入 Flash 是最完美的方法,在这简单说下它的用法:

下载它的.js文件,在这里: http://code.google.com/p/swfobject/(目前的最新版本是2.1)

在你的 HTML 页面头部区嵌入这个脚本文件:

在你的 HTML 中写一个用来放 Flash 的容器,比如div,并随便给一个 id 比如 flashcontent。然后在里面放上你的替换内容。

这里放替换内容,用来在 Flash 无法显示时显示。

使用脚本替换这个内容:

<script type="text/javascript">
  
swfobject.embedSWF("index_ad.swf", "index_ad", "524", "120", "9.0.0", "expressInstall.swf");
//参数意思: 地址,Flash 的 id(不是容器的 id),宽,高,版本需求,背景颜色
  
so.write("flashcontent");
<
/script>

这脚本可以写在 HTML 中也可以写在外部 .js 文件中。
OK,就介绍到这了。

评论(5)

  1. lostindream
    2008/11/29

    我站上的flash

    在FF下老有“不建议使用 getBoxObjectFor() 。 请使用 element.getBoundingClientRect()。”这样的报错,不知道怎么解决

  2. 沫夏小y
    2008/11/22

    侧边栏怎么掉center最下边去了,就现在。

    • 等待...
      2008/11/23

      就这一篇日志的侧边栏掉下去了,很奇怪的问题。暂时没去研究它…

  3. Yacca
    2008/11/20

    我也是直接拿来即用…米想过其他-.- 惭愧

  4. 知更鸟
    2008/11/12

    很详细啊,一直都是稀里糊涂就弄上了,重没总结过

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Top 管理

无觅相关文章插件,快速提升流量