Tomhsfreestyle 2012-07-20
应用地址:http://www.lichengyijing.com
“SWFObject”是利用Javascript插入flash,好处多多,代码简洁,不会出现IE6下的“单击此处以激活控件”的提示,并且能通过W3C验证。不同于传统的“object”插入flash的方法。
SWFObject在新的2.x版本中,其最简单的调用竟只需一句话,并且不需要等待页面加载完成,这意味着你可以将这句话写在页面的任何地方。比以前的版本,要简便多了。下面来看几个简单常用的调用方法:
1、最简单,最基本,只要想插入flash都能用到的经典一句话。
<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> <div id="swfid"></div>
参数注解:调用方法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>
SWFObjectDownland
http://code.google.com/p/swfobject/
分类:Javascript
swfobject.js,这个JS究竟有什么作用呢
[来源引用]
http://www.cnblogs.com/buffer/archive/2010/05/28/1746015.html
最近看到了好几个Flash网站,head代码里都加载了一个swfobject.js,这个JS究竟有什么作用呢?眼下正在做一个Web页面,说不定刚好可以派上用场。于是,好奇的搜索了一下。原来这是老外开发的,用于在HTML中方面插入AdobeFlash媒体资源(*.swf文件)的独立、敏捷的JavaScript模块,该模块中的JavaScript脚本能够自动检测PC、Mac机器上各种主流浏览器对Flash插件的支持情况。目前最新的版本是2.2,这里可以下载最新版的SWFObject:
http://code.google.com/p/swfobject/
发现用它的好处多多啊:
1.IE中没有讨厌的虚框问题了。
2.提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。
3.易于使用,只要在页面头加载一个.js文件,然后HTML写一个容器,里面放普通的文本或图片(用于无法显示Flash时显示),最后用脚本来替换这个元素里面的内容为Flash。
4.使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则的。
5.能够避免HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。
只需要包含swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入Flash媒体资源了。下面是一个最简单的范例:
<script type="text/javascript" src="swfobject.js"></script> <div id="flashcontent"> This text is replaced by the Flash movie. </div> <script type="text/javascript"> var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699"); so.write("flashcontent"); </script>让我们看看这些代码是如何工作的
<divid="flashcontent">[...]</div>首先,我们要为SWF资源预留一个HTML结点。这个HTML结点内的所有内容都会在客户端被Flash资源替换,当客户端没有安装Flash播放器的时候,这些内容会显示出来。这一特色在SEO以及对用户体验方面非常有必要。
varso=newSWFObject(swf,id,width,height,version,background-color[,quality,xiRedirectUrl,redirectUrl,detectKey]);创建一个新的SWFObject实例,并且传入一下参数:
swf-SWF文件路径
id-您为这个SWF文件分配的id值,它将用于给embed与object标签设定name属性,以便于可以支持swliveconnect的功能,如动态传入变量
width-宽度
height-高度
version-FlashPlayer需要的版本号,它可以详细到'主版本号.小版本号.细节',例如:"6.0.65"。一般地,我们只需传入主版本即可,例如:"6"。
background-color-Flash资源的背景色,16进制格式
此外,还有如下可选参数:
quality-画面质量,默认为"high"。
xiRedirectUrl-详见ExpressInstall相关
redirectUrl-没有安装相应版本的播放器后自动跳转的目标地址
detectKey-这是当忽略检测时,SWFObject将去url地址中查找的变量,默认值为“detectflash”,后续有详细介绍
so.write("flashcontent");将Flash资源应用到DOM里,在浏览器显示出来。
SWFObject在
<scripttype="text/javascript">
</script>
之间加入多个参数来实现各个效果,参数很多,但是实际只要一点点。我们可以看下这样的代码:
<script type="text/javascript" src="swfobject.js"></script> <script type="text/javascript"> var so = new SWFObject("movie.swf", "mymovie", "400", "100%", "8", "#336699"); so.addParam("quality", "low"); so.addParam("wmode", "transparent"); so.addParam("salign", "t"); so.addVariable("variable1", "value1"); so.addVariable("variable2", "value2"); so.addVariable("variable3", "value3"); so.addVariable("variable1", getQueryParamValue("variable1")); so.addVariable("variable2", getQueryParamValue("variable2")); so.write("flashcontent"); </script>
这段代码给出了SWFObject的常用参数:
varso=newSWFObject(swf,id,width,height,version,background-color[,quality,xiRedirectUrl,redirectUrl,detectKey]);
so.addParam("Param1","Param2");
so.addParam("Param3","Param4");
so.addParam("Param5","Param6");
so.addVariable("variable1","value1");
so.addVariable("variable2","value2");
so.addVariable("variable3","value3");
so.addVariable("variable1",getQueryParamValue("variable1"));
so.addVariable("variable2",getQueryParamValue("variable2"));
so.write("content");
解释一下这些参数的作用:
varso=newSWFObject(swf,id,width,height,version,background-color[,quality,xiRedirectUrl,redirectUrl,detectKey]);//这段是SWFObject必须的基本参数,所有SWFObject都必须包含的。
so.addParam("Param1","Param2");//这里是给Flash添加内联参数,可以实现诸如背景透明之类的效果。依照需求添加就可以了,参数和emded/object标签是一样的代码,下同。
so.addParam("Param3","Param4");
so.addParam("Param5","Param6");
so.addVariable("variable1","value1");//这里是给Flash添加FlashVar,这是以FlashVar的方式给Flash的Root添加变量,对于Number型变量在Flash端需要做类型转换。
so.addVariable("variable2","value2");
so.addVariable("variable3","value3");
so.addVariable("variable1",getQueryParamValue("variable1"));//Flash获取URL变量对于url?arg1=test1&arg2=test2这样用GET方式传递变量的URL,我们可以用getQueryParamValue方法来获取变量。
so.addVariable("variable2",getQueryParamValue("variable2"));
so.write("content");//这里是至关重要的一个地方,他是用一段特定内容取代Flash无法显示时的内容。可以事先在CSS里定义好样式,在文档里使用div标签写出来。这里在调用过来。