1 swfobject可以将swf文件嵌入到网页内,它是一个js文件,可以从这里下载:http://code.google.com/p/swfobject/
2 swfobject使用很简单,只要在网页<head></head>里加入对它的引用就可以使用了:
<script type="text/javascript" src="swfobject.js"></script>
3 下面是自己做的一个简单例子:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>SWFObject 2 dynamic publishing example page</title>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
var params = {
wmode : 'opaque'//加入这个参数后,那个嵌入的swf文件就不会被致于最上顶层,而是嵌入到指定的div里面
};
var attributes = {};
//这个是js的一个方法,在FlexPaperTest.swf里面就指定了要调用js的getPath()方法,这个也是作不swf文件与js进行交互,传参的例子
function getPath() {
return "b.swf";//待显示的swf文件路径
}
swfobject.embedSWF("FlexPaperTest.swf", "showFileArea", "100%", "720",
"9.0.0", "playerProductInstall.swf", flashvars, params, attributes);
</script>
</head>
<body>
<!-- 下面这个是在留出一个div来供上面的要显示的swf使用,
上面的embedSWF方法的第二个参数就是指定swf显示在页面的div的id。
使用object的方法是会自动检测用户是否安装合适的flash插件,没有时,就要这个div层显示要下载相应的插件
-->
<div id="showFileArea">
<h1>
Alternative content
</h1>
<p>
<a href="http://www.adobe.com/go/getflashplayer"><img
src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"
alt="Get Adobe Flash player" /> </a>
</p>
</div>
</body>
</html>
转载再一下swfobject的使用:
SWFObject的使用是非常简单的,只需要包含 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>
让我们看看这些代码是如何工作的
<div id="flashcontent">[...]</div>
首先,我们要为SWF资源预留一个HTML结点。这个HTML结点内的所有内容都会在客户端被Flash资源替换,当客户端没有安装Flash播放器的时候,这些内容会显示出来。这一特色在SEO以及对用户体验方面非常有必要。
var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey]);
创建一个新的SWFObject实例,并且传入一下参数:
swliveconnect
的功能,如动态传入变量"6.0.65"
。一般地,我们只需传入主版本即可,例如:"6"
。此外,还有如下可选参数:
"high"
。so.write("flashcontent");
SWFObject 的灵活性非常好。您完全可以事先写好HTML的其他部分,最后再回过头来添加Flash内容。这样可以确保在客户端没有Flash的情况下,用户不会一无所获;也可以确保针对搜索引擎,做了什么样的关键词优化。您完全不用像以前那样担心客户端的各种状况
SWFObject兼容当前各种主流浏览器,如:PC上的IE5/5.5/6, Netscape 7/8,Firefox, Mozilla, and Opera。Mac上的IE5.2, Safari, Firefox, Netscape 6/7, Mozilla, and Opera 7.5+,各种浏览器的后续版本也会继续支持
SWFObject检测Flash播放器版本从3开始到最新的版本号,而且也消灭了IE中“激活”的麻烦。这里有相关背景。
SWFObject可以方便地检查版本细节,例如我们需要v.6.0 r65 (or 6,0,65,0) 来处理SWF资源,就可以添加如下代码:
var so = new SWFObject("movie.swf", "mymovie", "200", "100", "6.0.65", "#336699");
SWFObject的版本检测可以人工忽略。如果在特定环境下您不希望SWFObject检测版本号,那么只需要传递一个参数在HTML页面中,就可以了。SWFObject可以捕获这个参数并且跳过检测,直接写入Flash嵌入代码到DOM中。用于忽略版本检测的变量名是“detectflash”,以下是一个例子:
<a href="mypage.html?detectflash=false">Bypass link</a>
以上我们接触到的范例都最基础的,接下来我们列举一些其他功能,尤其是传入参数、变量这些使用频率较高的行为。
<script type="text/javascript"> var so = new SWFObject("movie.swf", "mymovie", "200", "100%", "7", "#336699"); so.addParam("quality", "low"); so.addParam("wmode", "transparent"); so.addParam("salign", "t"); so.write("flashcontent"); </script>
这里可以看到Flash支持的内联参数列表:full list of the current parameters and their possible values(adobe.com官方资源)
用Flashvars是在预加载Flash时传入数据的最佳做法,语法格式与GET变量串非常类似,如:variable1=value1&variable2=value2&variable3=value3
SWFObject帮助您将这项工作变得更加明确化
<script type="text/javascript">
var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
so.addVariable("variable1", "value1");
so.addVariable("variable2", "value2");
so.addVariable("variable3", "value3");
so.write("flashcontent");
</script>
这些变量将会保存在_root
这个MovieClip对象里。
SWFObject还可以方便地直接从URL中接受参数传入Flash中,例如你有这样一个URL:http://www.example.com/page.html?variable1=value1&variable2=value2
。采用getQueryParamValue()
方法你就可以轻松获取这些参数,并将它们传入Flash,例如:
<script type="text/javascript"> var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699"); so.addVariable("variable1", getQueryParamValue("variable1")); so.addVariable("variable2", getQueryParamValue("variable2")); so.write("flashcontent"); </script>
getQueryParamValue()
方法同样可以获取JavaScript的Location对象的hash值“location.hash
”来与swf内部进行通信。这里是一个采用SWFObject的应用程序,其中用到了location.hash
对象:链接地址
SWFObject全面支持AdobeFlash播放器的自动升级功能(从6.0.65起的FlashPlayer支持在swf内部自动升级!),这样用户完全不用离开您的网页就能完成播放器的升级了。
首先,上传官方的expressinstall.swf到您的服务器上,然后使用useExpressInstall
方法指定这个swf文件的地址就可以了,例如:
<script type="text/javascript"> var so = new SWFObject("movie.swf", "mymovie", "200", "100", "8", "#336699"); so.useExpressInstall('expressinstall.swf'); so.write("flashcontent"); </script>
您可以安装一个低版本的Flash播放器然后访问这个页面看到效果
在SWFObject原文件压缩包中您可以找到具体的使用细节,您可以自己定制ExpressInstall的流程。
如果您的Flash影片在弹出窗口中,或者您希望用户在完成了ExpressInstall后重定向到其他地址,你可以采用xiRedirectUrl
属性,来自动完成这一步骤。例如:
<script type="text/javascript"> var so = new SWFObject("movie.swf", "mymovie", "200", "100", "8", "#336699"); so.useExpressInstall('expressinstall.swf'); so.setAttribute('xiRedirectUrl', 'http://www.example.com/upgradefinished.html'); // must be the absolute URL to your site so.write("flashcontent"); </script>