HTML插入FLASH的全兼容解决方案[主讲SWFObject方法]
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 的确认安装的框——这个框对很多用户来说是很恐怖的。
二、用JS嵌入的方法
用JS嵌入就是各有各的嵌入方法了,有嵌得好的有嵌得不好的。有人用 document.write 直接写,这法子说实话不大好,感觉 hack 成分多了,有点为了验证而验证的意思,而且没有体现出什么 JS 的优势。我觉得一个好的 JS 嵌入脚本,在保证 Flash 应有功能的基础上,要发挥 JS 的优势应该要有版本检测,要能很好解决可访问性问题(也就是用户在无法浏览 Flash 内容或禁用 JS 的时候应该如何处理的问题),要易于重复使用。
我们这里要讲的是SWFObject这个解决方案:
“SWFObject”是利用Javascript 插入flash,好处多多,代码简洁,不会出现IE6下的“单击此处以激活控件”的提示,并且能通过W3C验证。不同于传统的“object”插入flash的方法。
SWFObject在新的2.x版本中,其最简单的调用竟只需一句话,并且不需要等待页面加载完成,这意味着你可以将这句话写在页面的任何地方。比以前的版本,要简便多了。下面来看几个简单常用的调用方法:
1、最简单,最基本,只要想插入flash都能用到的经典一句话。
<div id="swfid"></div>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("test.swf", "swfid", "300", "120", "9.0.0", "expressInstall.swf");
</script>
注解:调用方法embedSWF——插入SWF文件,参数依次是@swf文件的地址;@用于装入swf文件的容器(如div)的id;@flash的宽度;@flash的高度(当然,这里的宽高都可以使用诸如100%这样的百分比来表示);@正常播放该flash所需的最低版本;@当版本低于要求时,执行该swf文件,这里利用这个flash跳转到官方下载最新版本的flash插件。(该参数可以省略)在同一个页面插入多个flash到不同位置时,只要重复上面的语句,使用不同的容器id就可以了。
2、给swf文件传递参数、变量、属性的调用方法
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
//1、使用Json初始化变量、参数、属性
var flashvars = {
name1: "hello",
name2: "world",
name3: "foobar"
};
var params = {
menu: "false"
};
var attributes = {
id: "dynamicContent2",
name: "dynamicContent2"
};
swfobject.embedSWF("test6_flashvars.swf", "content2", "300", "120", "6.0.0", "expressInstall.swf", flashvars, params, attributes);
//2、传统的初始化设置,效果一样
var flashvars = {};
flashvars.name1 = "hello";
flashvars.name2 = "world";
flashvars.name3 = "foobar";
var params = {};
params.menu = "false";
var attributes = {};
attributes.id = "dynamicContent3";
attributes.name = "dynamicContent3";
swfobject.embedSWF("test6_flashvars.swf", "content3", "300", "120", "6.0.0", "expressInstall.swf", flashvars, params, attributes);
//3、直接写在后面,就一句话,简洁剽悍,不拖泥带水
swfobject.embedSWF("test6_flashvars.swf", "content5", "300", "120", "6.0.0", "expressInstall.swf", {name1:"hello",name2:"world",name3:"foobar"}, {menu:"false"}, {id:"dynamicContent5",name:"dynamicContent5"});
</script>
分享到:
相关推荐
总之,SWFObject是解决HTML插入Flash的兼容性问题的有效工具,它简化了代码,提升了用户体验,同时也关注了网页的可访问性和标准合规性。随着Web技术的发展,虽然如今Flash已经逐渐被淘汰,但SWFObject所体现的解决...
2、使用swfObject向页面中插入Flash文件。 3、使用Flash中的ExternalInterface.call方法和fscommand方法对JS进行调用与传送数据。 4、使用Flash中的ExternalInterface.addCallback方法创建接口,使JS能够调用AS中的...
SWFObject是一个开源的JavaScript解决方案,由Georg Richter开发,它解决了早期Flash插件检测和嵌入的问题,使得网页开发者能够优雅降级,即当用户浏览器不支持Flash时,也能提供替代内容。SWFObject通过JavaScript...
总的来说,SWFObject.js是优化网页Flash体验的重要工具,尽管Flash已不再是主流,但对于仍需使用Flash的场合,它是不可或缺的解决方案。同时,它也提醒我们关注技术的发展趋势,适时更新我们的工具和技术栈,以适应...
**SWFObject:高效插入Flash内容的技术** SWFObject 是一个JavaScript库,广泛用于在网页中无缝、动态地插入Adobe Flash内容。这个小巧的库解决了早期网页中嵌入Flash时出现的一些问题,如浏览器兼容性、自适应性...
SWFObject2.2是HTML页面插入Flash内容的一个开源JavaScript库,它提供了一种优雅且兼容性极佳的解决方案。这个库解决了在不同浏览器和版本间插入Flash内容时可能出现的问题,确保了用户无论使用何种浏览器都能顺利...
(3)调用SWFObject方法插入Flash对象;(4)处理浏览器不支持Flash的情况,提供备用内容。 7. **移动设备兼容**:由于许多移动设备不支持Flash,SWFObject会检测设备的Flash支持情况,并根据需要显示替代内容,如HTML5...
SWFObject 2.0 提供了比其他 Flash Player 嵌入方法更加完善和灵活的解决方案,适合各种类型的开发者使用,无论他们是 HTML 开发者、Flash 开发者还是 JavaScript 开发者,都可以从中受益。具体来说,SWFObject 2.0 ...
SWFObject的设计目标是简化Flash媒体的插入过程,同时确保对搜索引擎优化友好,并符合HTML标准。 SWFObject的工作原理是通过在HTML页面中预留一个具有特定ID的元素,例如`<div id="flashcontent">`。当用户浏览器...
1. **对象和参数的动态修改**:在页面加载后,你可以使用SWFObject的方法来修改已插入的Flash对象的属性和参数。 2. **事件监听**:SWFObject允许你监听Flash对象的事件,如加载完成、错误等,从而实现更复杂的交互...
不过,随着HTML5和WebGL等技术的发展,现代网页更多地使用这些原生的、无需插件的解决方案来实现类似的功能,以适应移动设备和对Flash支持逐渐减少的浏览器环境。 总的来说,这个实例展示了Flash和SWFObject.js在...
这个库由Grant Skinner创建,旨在解决早期Flash嵌入时遇到的兼容性和可访问性问题。通过使用SWFObject,开发者可以实现跨浏览器的Flash支持,同时确保非Flash用户能够看到替代内容,提升网页的用户体验。 ### 1. **...
这个库由格雷格·劳(Greg Laue)创建,旨在提供一个优雅的解决方案,使得Flash内容能够在各种浏览器和设备上以最佳方式呈现,同时支持标准HTML语法。SWFObject的出现是为了克服早期使用`<embed>`和`<object>`标签...
这个库的出现解决了早期在网页上插入Flash时存在的兼容性和可访问性问题。标题"swfobject 2.0"指的是该库的第二个主要版本,通常会包含性能提升、新功能和错误修复。 SWFObject的核心功能是通过动态替换HTML代码来...
4. **调用SWFObject**:使用一行JavaScript代码,调用SWFObject方法,传入预定义的参数,实现Flash内容的插入。 例如,我们可以这样使用SWFObject: ```html <script src="path/to/swfobject.js" type="text/...
swfobject是一个轻量级、跨浏览器的解决方案,它解决了在多种浏览器和不同版本间插入Flash内容的兼容性问题。这个库由格雷格·劳尔(Greg Lauer)创建,并在2006年首次发布。随着时间的推移,swfobject逐渐成为网页...
SWFObject 2.2可能通过提供特定的CSS或JavaScript解决方案来解决这个问题,确保Flash内容边缘平滑,与页面其他元素融合。 4. **替代内容**:对于没有Flash支持的用户(例如移动设备或选择不使用Flash的用户),...
总的来说,swfObject是一个强大的解决方案,使得网页开发者能够在不牺牲兼容性和无障碍性的前提下,优雅地集成Flash内容。随着现代网页技术的发展,虽然Flash的使用已经逐渐减少,但swfObject的历史地位和它所代表的...
swfobject.js swfaddress.js swffit.js等资源与全屏flash页面的应用。 swfobject.js为2.2版本,判断用户flash player版本,向swf传递参数等。 swfaddress.js的作用是在不刷新网页的情况下为地址栏更换地址,并可...
这个库由格雷格·劳(Greg Lafrance)创建,并在2006年首次发布,目的是解决早期Flash内容在网页上加载和显示的一系列问题,包括浏览器兼容性、自动版本检测和内容备份等。 在网页设计中,Flash曾经是实现动态效果...