`
yangzhifeng
  • 浏览: 14820 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在WEB标准中嵌入Flash的几种方法

阅读更多
Flash 嵌入的问题朋友们可能认为很简单,但是具体到一些问题上来讲,就不是那么简单了,比如:IE浏览器对FLASH的拦截虚框怎么去掉?在FF、OP、NS等其它浏览器是否兼容?代码是否符合W3C标准??等等

下面我就转贴别人的一篇文件,共同学习一下

一、传统的方法

<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="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 的确认安装的框——这个框对很多用户来说是很恐怖的。

二、Flash satay
只用 object 的方法,最早是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="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/ 本地下载://www.adobe.com/products/flashplayer/download/detection_kit/

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

<script type="text/javascript" src="swfobject.js"></script>


在你的 HTML 中写一个用来放 Flash 的容器,比如
,并随便给一个 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 文件中。
 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/vwfkyy/archive/2008/04/15/2292842.aspx
分享到:
评论

相关推荐

    Web页中插入flash动画代码

    ### Web页中插入Flash动画代码知识点详解 #### 一、Flash动画在网页中的应用背景 在Web开发领域,Flash曾是一种广泛使用的多媒体技术,用于在网页上播放动画、视频和其他交互式内容。随着HTML5的发展及其对多媒体...

    在PPT中插入FLASH动画的几种方法.doc

    以下是四种在PowerPoint 2003中插入Flash动画的方法: **方法一:插入SWF文件** 1. 通过“插入”菜单选择“对象”,然后从“由文件创建”选项中选择你的SWF文件。 2. 在“动作设置”对话框中,选择“对象动作”下的...

    在PPT中插入FLASH动画的几种方法 (2).doc

    以下是四种在PowerPoint 2003中插入Flash动画的方法: 方法一:通过插入对象 1. 选择“插入”菜单,然后选择“对象”。 2. 在弹出的对话框中,选择“由文件创建”,找到SWF文件,点击“插入”。 3. 在“动作设置”...

    asp.net嵌如flash的几种方法

    下面,我们将详细探讨几种在ASP.NET中嵌入Flash的方法。 1. **HTML Object Tag**: 最常见的方式是通过HTML的`&lt;object&gt;`标签来插入Flash内容。你需要指定`classid`和`codebase`属性以引用Flash Player ActiveX控件...

    网页中插入flash时钟代码(白底蓝色钟面)

    ### 知识点一:网页中插入Flash时钟的基本概念 在互联网发展的早期阶段,Flash是一种广泛使用的多媒体框架,用于创建动画、视频和复杂的应用程序。由于其强大的交互能力和丰富的视觉效果,Flash常被用于网页设计中...

    flash和jsp,flash和java交互的web project

    在Flash和JSP/Java的交互中,通常有以下几种方式: 1. **Flash ActionScript调用Java方法**:通过ActionScript(Flash的编程语言)中的 ExternalInterface 类,可以调用在服务器端编写的Java方法。这样,用户在...

    一个基于C#+ Asp.Net实现的Web网页嵌入运行 SWF File 的程序例子

    本示例探讨的是如何使用C#和Asp.Net技术在Web页面中嵌入并运行SWF(ShockWave Flash)文件,这是一种流行的格式,用于在网页上展示动画和交互式内容。 SWF文件是由Adobe Flash创建的,它在过去广泛应用于网页设计,...

    flash嵌入iframe的例子

    在IT行业中,尤其是在Web开发领域,Flash和iframe的结合使用是一种常见的技术,特别是在过去的网页设计中,用于实现交互式内容的展示。本示例“flash嵌入iframe的例子”旨在教你如何将Flash(SWF文件)嵌入到HTML的...

    符合web标准且可单独关闭的广告代码

    在现代Web开发中,创建符合标准且用户体验友好的广告代码是至关重要的。"符合web标准且可单独关闭的广告代码"这一主题旨在提供一种能够遵循Web最佳实践,并且允许用户根据需要关闭广告的JavaScript实现。这不仅可以...

    CoffeeCup Web 创建flash日历.

    在创建Flash日历的功能上,CoffeeCup Web 提供了一种无需编码的方式,让用户只需点击几下鼠标就能生成具有视觉吸引力的日历。这大大降低了设计Flash内容的门槛,使更多的设计师和非技术人员能够参与其中。 Flash...

    winform插入flash(2.0)

    在Windows Forms(Winform)应用程序中插入Flash内容可以为用户界面提供动态和交互性的功能。在本文中,我们将深入探讨如何解决"未能导入ActiveX控件。请确保它已正确注册"的问题,并在Visual Studio 2005(VS2005)...

    Silverlight中嵌入HTML、Flash和PDF文件源码.zip

    4. **嵌入PDF**: 展示PDF文件在Silverlight中并不直接支持,但有几种方法可以实现。一种方法是使用第三方控件,如Telerik的RadPdfViewer或ComponentOne的PdfView,这些控件提供嵌入PDF文档的功能。另一种方法是使用...

    FlowPlayer是一个用Flash开发的在Web上的网页flash播放器代码

    1. **Flash技术**:FlowPlayer是使用Flash技术构建的,这在过去的几年中是网络视频播放的标准。Flash允许在浏览器中播放流媒体内容,支持多种视频格式,如FLV、F4V等。然而,随着HTML5的普及和移动设备对Flash的支持...

    rtmp视频流web浏览器播放

    总的来说,这个项目提供了在Web环境中利用Flash Player和RTMP协议播放视频流的一种解决方案。然而,随着HTML5和WebRTC的发展,RTMP+Flash的组合正逐渐被更现代的技术所取代,以适应更广泛的浏览器兼容性和更好的用户...

    svg在web页面中的显示工具

    SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,它在Web开发中扮演着重要的角色。矢量图的优点在于,无论放大多少倍,图像质量都不会失真,这使得SVG非常适合用于创建图形、图标以及复杂的图表。本文...

Global site tag (gtag.js) - Google Analytics