SWFObject是一个用于在html中方便的Adobe Flash媒体资源(*.swf)的javascript插件。该插件的JavaScript脚本能够自动检测PC、Mac机器上各种主流浏览器对Flash插件的支持情况。它使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则。此外,它能够避免您的HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。

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+,各种浏览器的后续版本也会继续支持

1简单的实例
SWFObject的使用是非常简单的,只需要包含swfObject.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>

创建SWFObject实例的参数:
var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey]);

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里,在浏览器显示出来。

2忽略SWFObject检测flash版本号
SWFObject的版本检测可以人工忽略。如果在特定环境下您不希望SWFObject检测版本号,那么只需要传递一个参数在HTML页面中,就可以了。SWFObject可以捕获这个参数并且跳过检测,直接写入Flash嵌入代码到DOM中。用于忽略版本检测的变量名是"detectflash",下面的例子中在mypage.html页面中不需要SWFObject检测版本号则在其后船体一个detectflash=false参数即可:
<a href="mypage.html?detectflash=false">Bypass link</a>

3传入Flash内联参数的简单范例
<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>
quality,wmode,salign是flash的内联参数。

4采用"Flashvars"参数传入变量
用Flashvars是向预加载的flash传入数据的最佳做法。例如:
<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>

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()函数是SWFObject.js中的一个函数。getQueryParamValue函数的代码如下:
function getQueryParamValue(param) {
var q = doc.location.search || doc.location.hash;
if (q) {
if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark
if (param == null) {
return urlEncodeIfNecessary(q);
}
var pairs = q.split("&");
for (var i = 0; i < pairs.length; i++) {
if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)));
}
}
}
return "";
}

5ExpressInstall
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影片在弹出窗口中,或者您希望用户在完成了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>

最新文章

  1. 拦截httpservlet返回码_设计 API 接口,实现统一格式返回
  2. CVPR 2021 比CNN和Transformer更好的Backbone?伯克利谷歌提出BoTNet,精度达84.7%
  3. 【Python-ML】神经网络-多层感知器
  4. create-react-app 构建的项目使用 mobx (说到底就是为了使用装饰器语法对 babel 做些配置...
  5. Linux_ACL_su
  6. 阿里云镜像下载ubuntu
  7. 编历修改工作表中的控件属性(更新条形码)
  8. 微信群裂变不起来怎么办?
  9. SpringBoot-Bean作用域
  10. ROS中NodeHandle nh与NodeHandle nh(“~“)区别
  11. 【计算机网络】计算机网络的体系结构
  12. Kinect黑客:机械人科技未来的转变者
  13. 行情平淡期做市商如何刷量 说一个网格策略魔改高频刷单策略的思路
  14. typora:一些常用数学符号
  15. 机器学习Python学习——逻辑斯蒂回归(Logistic Regression)
  16. Pixhawk原生固件PX4之常用函数解读
  17. Vmware安装迷你版的 Centos6 并配置 Nat 模式可访问外网
  18. 一直以来使用div menu下拉时flash总是覆盖div menu菜单,当时就很老火了。
  19. 淘宝被刷单怎么办?怎么投诉?万顿思电商
  20. 【北京-望京】这16家互联网公司值得你加入

热门文章

  1. apex乱码_[请教]apex安装简体中文语言包的步骤
  2. Activiti实现流程定义的控制与修改
  3. 自媒体文章如何有效提高原创度?
  4. win10计算机性能设置,巧设置让Win10运行更流畅
  5. 数字孪生技术方案下的智慧城市建设治理体系优势
  6. docker-compose 启动顺序的问题depends_on
  7. android 仿旅游日历控件_仿携程日历控件
  8. SPSS——非参数检验——1-Sample K-S 单个样本(Kolmogorov-Smirnov)柯尔莫哥洛夫-斯米诺夫检验
  9. 如何修改计算机mac地址吗,如何修改电脑的Mac地址
  10. 基于阿里云的系统灾备方法架构与安全应急预案介绍