网页中嵌入Flash的方法讨论

2016-01-29 12:42 6 1 收藏

网页中嵌入Flash的方法讨论,网页中嵌入Flash的方法讨论

【 tulaoshi.com - Flash 】

Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等。
  讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结论就可以了。

  一、传统方法   <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="allowScriptAccess" value="sameDomain" /
<param name="movie" value="mymovie.swf" /
<param name="quality" value="high" /
<param name="bgcolor" value="#ffffff" /
<embed src="http://img.jcwcn.com/attachment/portal" 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 的参数时两个地方都要改的原因。这种方法是 Macromedia 一直以来的官方方法,最大限度的保证了 Flash 的功能,没有兼容性问题。但是它现在不那么好用了:

  无法通过验证,由于为了兼容性而嵌入的 embed 标签是不符合 W3C 的规范的。当然,如果你不在乎什么规范不规范,另当别论。

  微软由于种种原因,在 sp2 后限制了 IE 的 ActiveX 的使用模式,就是在页面中的 ActiveX 有一个虚框,需要用户点击一次才能正常交互。Flash是作为一个 ActiveX 嵌入到网页中的,所以它也会受牵连,只有通过 JS 嵌入 Flash 才能解决这个问题。

  没有 Flash 版本检测,如果版本浏览器的flash插件版本不够,或者不能正常显示你的 swf 文件,或者会弹出一个 ActiveX 的确认安装的框——这个框对很多用户来说是很恐怖的。

  二、只用 object 的方法

  这种方法的名字叫做 Flash satay,最早是2002年由 Drew McLellan 发表在 A List Apart 上,后来又经过了几次完善:   <object type="application/x-shockwave-flash
data="c.swf?path=movie.swf"
width="400" height="300"
<param name="movie"
value="c.swf?path=movie.swf" /
<img src="http://img.jcwcn.com/attachment/portal"
width="200" height="100" alt="" /
</object  

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

  需要一个 holder swf 来加载你的目标 swf 以保证 IE 中的 stream 能力,如果你需要通过 flashvars 来传参,或者和页面的 JS 交互,会很麻烦。

  同上面第二点,ActiveX的虚框问题。

  继续同上没有版本检测

  还是有少数用户代理(比如一些版本的 safari 和一些屏幕阅读器)不认这种方式,有bug。

三、用JS嵌入的方法

  用JS嵌入就是各有各的嵌入方法了,有嵌得好的有嵌得不好的。有人用 document.write 直接写,这法子说实话不大好,感觉 hack 成分多了,有点为了验证而验证的意思,而且没有体现出什么 JS 的优势。我觉得一个好的 JS 嵌入脚本,在保证 Flash 应有功能的基础上,⒒?JS 的优势应该要有版本检测,要能很好解决可访问性问题(也就是用户在无法浏览 Flash 内容或禁用 JS 的时候应该如何处理的问题),要易于重复使用。
  我知道的比较常见的 JS 嵌入方法有以下几个:

  SWFObject
  UFO - Unobtrusive Flash Objects[next]
  Macomedia(现在是Adobe了..)提供的脚本[这里]和[这里]。

  我 用SWFObject比较多,就挑它来说一些这种方法的优点:

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

  四、我的结论

  现阶段用 JS 嵌入 Flash 是最完美的方法,虽然这法子这也是由于浏览器的种种问题而作出的妥协。
  但它在

来源:http://www.tulaoshi.com/n/20160129/1487240.html

延伸阅读
标签: Web开发
SWFObject的使用是非常简单的,只需要包含 swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入Flash媒体资源了。 一、优点: 1、SWFObject 的灵活性非常好。完全可以事先写好HTML的其他部分,最后再回过头来添加Flash内容。这样可以确保在客户端没有Flash的情况下,用户不会一无所获;也可以确保针对搜索引擎,做了什么样的...
标签: Web开发
本JavaScipt教程将让你感受到FLASH给您带来有声世界的无穷魅力。在开始本教程之前,我先介绍一下本教程涉及到的内容:隐藏嵌入的SWF、 播放流同步的SWF、 从指定的帧上开始流、 停止和播放流、 检查是否磁道在播放、 检查是否播放器准备好、 检查SWF转载的百分比、验证SWF是否完全装载好、检查播放器的版本号、设置最小的播放器版本号、 清除错...
第一章 概述 在CBUILDER中,存在以下几种流对象: TFileStream TMemoryStream TStringStream TWinSocketStream TBlobStream TOleStream TClientBlobStream TResourceStream 下面是以上各类的继承关系 TObject | TStream | +---------------------------+-----...
标签: Web开发
作者:马健 邮箱:stronghorse@tom.com 主页:http://stronghorse.yeah.net 版本:1.01 初始发布日期:2005.08.29 最后更新日期:2005.09.28 目录 一、前言 二、从E书或网页中获取文件的一般步骤 三、从E书或网页中获取链接进来的css文件 四、从E书或网页中获取链接进来的js文件 五、从E书或网页中获取Flash文件 六、从E书或网页中获取背景音乐...
WIDTH="550" HEIGHT="400" CODEBASE="http://active.macromedia.com/flash3/cabs/swflash.cab#version=3,0,0,0"> PLAY="false" LOOP="false" QUALITY="autohigh" BGCOLOR="#FFFFFF" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"> 之所以在EMBED标签的外面...

经验教程

436

收藏

60
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部