技巧文章:网页中嵌入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="http://www.webjx.com/htmldata/2007-03-12/mymovie.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="http://www.webjx.com/htmldata/2007-03-12/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 的参数时两个地方都要改的原因。这种方法是 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://www.webjx.com/htmldata/2007-03-12/noflash.gif" 
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

Macomedia(现在是Adobe了..)提供的脚本[这里]和[这里]。

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

四、我的结论

现阶段用 JS 嵌入 Flash 是最完美的方法,虽然这法子这也是由于浏览器的种种问题而作出的妥协。但它在保证 Flash 功能的前提下还利用 JS 提供了额外的好处,再者又已经有人写了很完善的嵌入脚本可以方面地下载使用(推荐 SWFObject),我们还有什么理由不用它呢?

SWFObject 那网页是英文的,这里写个简单的用法教程

下载它的.js文件,在这里: http://blog.deconcept.com/swfobject/swfobject1-4.zip (如果链接失效可能是版本有更新,请用上面给出的地址去主页下载最新版本)。在你的 HTML 页面头部<head>区嵌入这个脚本文件:<script type="text/javascript" src="swfobject.js"></script>

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

<div id="flashcontent">
这里放替换内容,用来在 Flash 无法显示时显示。
</div>
使用脚本替换这个内容:

<script type="text/javascript">
   var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
//参数意思: 地址,Flash 的 id(不是容器的 id),宽,高,版本需求,背景颜色
//这是最基本的,如果你要高级的设置,就仔细翻翻说明吧。
   so.write("flashcontent");
</script>
这脚本可以写在 HTML 中也可以写在外部 .js 文件中。

OK

时间: 2025-01-30 00:28:35

技巧文章:网页中嵌入Flash的方法讨论的相关文章

网页中嵌入 Flash 的方法讨论

网页 Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等.讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结论就可以了. 一.传统的方法.<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"    codebase="http://fpdownload.macromedia.com/pub/shockwave

网页中嵌入Flash的方法讨论_Flash教程

Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等.讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结论就可以了. 一.传统的方法 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"    codebase="http://fpdownload.macromedia.com/pub/shockwave/ca

符合web标准的网页中调用Flash的方法

常有网友提问,如何让网页中嵌入的Flash标签也符合web标准.目前还没有一个完美的解决办法,这篇文章中,我们将Flash嵌入标签写入js文件中,通过变量传递参数的办法来回避不符合标准的标签. 请注意,这只是一个变通的方法,换汤不换药,并未能最终解决存在的问题,通过验证只是一种表象,这样的思路是不是可取,在实际操作中请大家自行斟酌. 首先建立一个JS文件flash.js.写入如下代码: function swf(file,w,h) {     document.write('<object cl

这个网页中的FLASH部分怎么作出来?

问题描述 这个网页中的地图点击事件的FLASH效果如何做出来,地址如下:http://news.qq.com/zt/2009/cydzd/xzlx.htm知道的大侠们请详细讲解下,小弟刚刚开始做,最好说明做FLASH的工具,以及如何嵌入到网页中.谢谢!! 解决方案 解决方案二:嵌入到网页中<objectclassid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"codebase="http://download.macrome

在WEB标准中嵌入Flash 的最佳方法

Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等.讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结论就可以了. 一.传统的方法.<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"    codebase="http://fpdownload.macromedia.com/pub/shockwave/ca

JavaScript返回网页中超链接数量的方法_javascript技巧

本文实例讲述了JavaScript返回网页中超链接数量的方法.分享给大家供大家参考.具体如下: 下面的JS代码通过document.links获取网页中的所有超级链接,从而获得超链接的数量 <!DOCTYPE html> <html> <body> <img src ="planets.gif" width="145" height="126" alt="Planets" usemap

JavaScript返回网页中锚点数目的方法_javascript技巧

本文实例讲述了JavaScript返回网页中锚点数目的方法.分享给大家供大家参考.具体如下: JavaScript返回网页中锚点的数目,下面的JS代码获取页面中的anchor数量 <!DOCTYPE html> <html> <body> <a name="html">HTML Tutorial</a><br> <a name="css">CSS Tutorial</a>

使用Dreamweaver在网页中插入Flash按钮与文本

dreamweaver|按钮|插入|网页 Flash 的动画按钮能够给网站带来动感,这让不少读者觉得十分有趣,同时也为网站增加了许多访客,其实在 Dreamweaver MX 2004 中只需几步简单的操作,就可以插入 Flash 按钮. 一.在网页中插入Flash 按钮 ( 1 )打开 Dreamweaver MX 2004 软件,新建文件并保存页面.(提示:要保存的文件夹不可以用中文名命名) ( 2 )插入 Flash 按钮并设置参数,如图1.2 所示. ( 3 )保存文件,完成操作.简单的

问题解决:如何让网页中的Flash影片全屏?

解决|网页|问题 Flash Player 9在网上流行了很长一段时间了.在以往版本的 Flash Player 当中要想实现网页中Flash影片全屏就必须借助 Javascrīpt 来实现.但对于 Flash Player 9来说,就无须如此麻烦Adobe为其加入了浏览器 Flash 影片全屏模式的功能.据说:全屏模式主要是针对 Flash 视频和 Flash 应用的显示需求而增加的.通过它就可以很容易的通过AS来控制网页中Flash影片的全屏播放. 下面是一个全屏范例,下载解压后,打开.ht