如何使用swfobject(中文版)
- SWFObject 2提供两种优化flash播放器的嵌入方法:基于标记的方法和依赖于js的方法。
- SWFObject 2提供一个js的API,为嵌入SWF文件和获取Flash播放器的相关信息提供了一个完整的工具箱。
- 只用了一个很小的js文件 (10Kb / GZIPed: 3.9Kb)。
- 是SWFObject 1.5, UFO and the Adobe Flash Player Detection Kit的继承者。
- 拟统一所有现有的Flash播放器的嵌入方法,并提供了嵌入Adobe Flash Player内容新的标准
- 比现在其他的flash嵌入方式要灵活和更加优化。
- 给任何人提供了解决方案:不管你是html开发者还是flash或者js开发者,都有对应的方法可用。
- 打破了设定在供应商特定的标记,促进web标准和替代内容的使用。
- 使用不显眼的JavaScript和JavaScript最佳实践。
- 容易使用。
- 检测Flash播放器版本,并确定是否应该显示Flash内容或替代内容,以避免过时的Flash插件让Flash内容无法显示。
- 万一flash插件版本太低,通过dom操作可以显示默认的替换内容,给用户提供信息。(注意:如果flash插件没有安装,dom对象元素自动会显示替代内容)
- 提供选项,用于快速安装的Adobe下载最新的Flash Player
- 提供一个JavaScript API来执行常见的Flash播放器和Flash内容相关的任务
- 静态发布的方法用标准的标记嵌入flash内容和替代元素,并使用js来解决那些单独用标记无法解决的问题。
- 动态发布方法是基于标记的替代内容,通过js用flash来替换替代内容,前提是当前flash版本和js支持(像之前的 SWFObject版本和UFO)。
- 静态发布的优势:
- 促进实际制作符合标准的标记
- 最佳嵌入性能
- 嵌入Flash内容的机制,不依赖于脚本语言,所以flash内容可以被更多的人看到(兼容性更好)
- 如果你有Flash插件安装,但已禁用JavaScript或使用的浏览器不支持JavaScript,您将仍然能够看到你的Flash内容
- flash可以运行在对js支持非常糟糕的设备上,比如sony的psp。
- RSS阅读器等自动化工具能够抓到Flash内容
- 动态发布的优势:
- 它与脚本的应用程序很好地集成在一起,能够使动态变量(flashvars)
- 它避免了点击激活机制激活活动内容在Internet Explorer6/7和Opera9+。请注意,微软已经淘汰了其Internet Explorer浏览器的最活跃的内容
<!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 - step 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<div> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="420">
<param name="movie" value="myContent.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="myContent.swf" width="780" height="420">
<!--<![endif]-->
<p>Alternative content</p>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object> </div>
</body>
</html>
- classid(只用于外层元素,值一直是: clsid:D27CDB6E-AE6D-11cf-96B8-444553540000)
- type(只用于内层元素,值一直是: application/x-shockwave-flas)
- data(只用于内层元素,定义swf的路径:data="myContent.swf")
- width(定义swf的宽度,内外都用到)
- height(定义swf的高度,内外都用到)
- movie(只用于内层元素,定义swf的路径:<param name="movie" value="myContent.swf" />)
- 注意:我们建议不要使用codebase属性指向Adobe Flash插件安装程序的URL的服务器,因为这样是违法的,他限定了只能当前域来访问。我们建议在替代内容中放一个提示信息,这样用户会有更好的体验而不是下载flash。
- id
- name
- class
- align
你能使用下面的参数:
- play
- loop
- menu
- quality
- scale
- salign
- wmode
- bgcolor
- base
- swliveconnect
- flashvars
- devicefont (more info)
- allowscriptaccess (more info here and here)
- seamlesstabbing (more info)
- allowfullscreen (more info)
- allownetworking (more info)
<!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 - step 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript" src="swfobject.js"></script> </head>
<body>
<div>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="420">
<param name="movie" value="myContent.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="myContent.swf" width="780" height="420">
<!--<![endif]-->
<p>Alternative content</p>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
</body>
</html>
步骤3:用SWFObject库注册您的Flash内容,告诉SWFObject做什么
- 第一个参数(字符串,必需)指定标记中使用的ID。
- 第二个参数(字符串,必需)指定了你内容发布所需要的flash版本。它会激活Flash版本检测,以确定是否显示Flash内容或通过dom操作强制显示替代内容。Flash的版本号通常由major.minor.release.build四部分组成,但是SWFObject只识别前三个数字,所以 "WIN 9,0,18,0" (IE) 或者 "Shockwave Flash 9 r18" (其他浏览器)都会被翻译成 "9.0.18". 如果你只想测试主要版本,你可以省略次要和发行版本号,如“9”,而不是“9.0.0”。
- 第三个参数(字符串,可选),可用于启动Adobe快速安装,并指定您的快速安装SWF文件的URL。快速安装会显示一个标准化的Flash插件下载对话框来替代你的Flash内容,当所需的插件版本不可用。一个默认的expressInstall.swf文件被一起打包在项目中。它也包含了相应的expressInstall.fla和AS文件(在SRC目录),让你创建自己的自定义快速安装体验。请注意,快速安装只会触发一次(他第一次被调用),他只被支持在win平台和mac平台的 Flash Player 6.0.65以上的版本,他会要求一个最小的尺寸是 310x137px。
- 第四个参数(js函数,可选)用来定义一个回调函数,当插件创建成功或者失败都可以调用该函数来处理一些事。
<script type="text/javascript">
swfobject.registerObject("myId", "9.0.115", "expressInstall.swf");
</script>
- 用SWFObject HTML和js生成器来帮助你编写代码。
- 重复步骤1和3,把多个SWF文件嵌入到一个HTML页面
- 引用活动对象元素的最简单的方法是使用JavaScript API:swfobject.getObjectById(objectIdStr
- swfUrl (字符串, 必须) 指定您的SWF的URL
- id (String, required) 指定包含替换元素的html元素的ID,能用你的flash的内容来替换
- width (String, required) 指定SWF的宽度
- height (String, required) 指定SWF的高度
- version (String, required)指定SWF 发布所需的flash播放器的版本 (格式 is: "major.minor.release" or "major")
- expressInstallSwfurl (String, optional)指定快速安装的路径,激活快速安装. 请注意,快速安装只会触发一次(他第一次被调用),他只被支持在win平台和mac平台的 Flash Player 6.0.65以上的版本,他会要求一个最小的尺寸是 310x137px。
- flashvars (Object, optional) 指定需要传递给flash的变量(用键值对)
- params (Object, optional) 指定嵌入对象的参数(用键值对)
- attributes (Object, optional) 指定对象的属性(用键值对)
- callbackFn (JavaScript function, optional)能定义一个回调函数,不管调用flash创建成功或者失败都可以调用该函数
- id (NOTE: 如果没有定义会自动取替换元素容器的id)
- align
- name
- styleclass (see note about class)
- class
var attributes = {
id: "myId",
align: "left",
styleclass: "myclass"
};
var attributes = {
id: "myId",
align: "left",
"class": "myclass"
};
- play
- loop
- menu
- quality
- scale
- salign
- wmode
- bgcolor
- base
- swliveconnect
- flashvars
- devicefont (more info)
- allowscriptaccess (more info here and here)
- seamlesstabbing (more info)
- allowfullscreen (more info)
- allownetworking (more info)
<script type="text/javascript"> var flashvars = {};
var params = {};
var attributes = {}; swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0","expressInstall.swf", flashvars, params, attributes); </script>
var flashvars = {
name1: "hello",
name2: "world",
name3: "foobar"
};
var flashvars = {};
flashvars.name1 = "hello";
flashvars.name2 = "world";
flashvars.name3 = "foobar";
<script type="text/javascript">
swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0","expressInstall.swf", {name1:"hello",name2:"world",name3:"foobar"}, {menu:"false"}, {id:"myDynamicContent",name:"myDynamicContent"});
</script>
<script type="text/javascript">
var flashvars = false;
var params = {
menu: "false",
flashvars: "name1=hello&name2=world&name3=foobar"
};
var attributes = {
id: "myDynamicContent",
name: "myDynamicContent"
};
swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0","expressInstall.swf", flashvars, params, attributes);
</script>
- SWFObject 2不能向后兼容到SWFObject 1.5
- 目前首选在你的HTML页面的头部插入所有脚本块,增加到页面body中可能会产生冲突(比如flash替代替换内容),因为js代码执行被延后了。
- 库本身都是用小写的:swfobject,而不是SWFObject
- 方法只能通过库访问
- 此外,JavaScript API是完全不同的和更复杂的
- SWFObject 2替换整个替换标签的内容,包括所引用的HTML容器元素,成为flash内容,只要js可用,flash版本支持。然而, SWFObject 1.5只替换替换表情容器内的内容。如果你没有定义一个id属性,对象元素会自动继承包含元素中的id。
- SWFObject 2替换整个替换标签的内容,包括所引用的HTML容器元素,成为flash内容,只要js可用,flash版本支持。然而, UFO只替换替换表情容器内的内容。如果你没有定义一个id属性,对象元素会自动继承包含元素中的id。
- UFO's setcontainercss 特征在 SWFObject 2 中没有被纳入。
SWFObject 2是不是支持MIME type application/xhtml+xml?
- 只有很少(不显着)web开发者使用
- 我们不能确定它走的方向,ie不支持他,其它主要浏览器厂商都瞄准了一个新的html解析的标准(html5),他与当前w3c解析的方式不同。
- 不支持他我们节省了大量的文件和努力。
如何使用swfobject(中文版)的更多相关文章
- 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- 2DToolkit官方文档中文版打地鼠教程(一):初始设置
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- Python 资源大全中文版
Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...
- Tensorflow 官方版教程中文版
2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,同日,极客学院组织在线TensorFlow中文文档翻译.一个月后,30章文档全部翻译校对完成,上线并提供电子书下载,该 ...
- 使用 SWFObject.js 插入Flash
今天学习了一下使用 SWFObject.js 这个js插入flash. 下载地址:http://code.google.com/p/swfobject/ 这个js的好处 1.IE中没有讨厌的虚框问题了 ...
- JavaScript资源大全中文版(Awesome最新版--转载自张果老师博客)
JavaScript资源大全中文版(Awesome最新版) 目录 前端MVC 框架和库 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 基于 Node 的 CMS 框 ...
- DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...
- 数据库SQL Service 2014中文版的安装和配置教程
一.我的电脑环境 1.windows8.1(64位) 2.之前电脑没有安装数据库的软件 二.装机之前准备(我这儿提供百度云保存和下载) 1.下载一个“Sql service 2014中文版” http ...
随机推荐
- SharedPreferences 原理 源码 进程间通信 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- JAVA和C#检测IP地址段是否交叉和获取地址段IP列表的方法
一.说明 我们经常编程时,需要对一个DIDR地段计算其可用IP地址,或者验证某个IP是否被包含在一个地址段中. 二.工具 1.Java 可以使用 cidr-ip-trie库解决. https://gi ...
- nodeJS服务器的创建和重新启动
一: 首先在nodejs项目里创建一个server.js文件,输入下面代码 var http = require("http"); http.createServer(functi ...
- 深入分析java线程池的实现原理(转载)
前言 线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配.调优和监控,有以下好处: 1.降低资源消耗: 2.提高响应速度: 3.提高线程的 ...
- 11G新特性 -- Result Cache
共享池存放sql语句的解析和编译版本,以便数据库能快速执行频繁执行的sql语句和plsql. 在11g中,数据库使用result cache来存放sql和plsql的执行结果. result cach ...
- Nginx 访问日志配置
一.Nginx 访问日志介绍 Nginx 软件会把每个用户访问网站的日志信息记录到指定的日志文件里,供网站提供者分析用户的浏览行为等,此功能由 ngx_http_log_module 模块负责. 二. ...
- R语言编程艺术#01#数据类型向量(vector)
R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...
- http_referer 白名单
valid_referers none blocked *.ttlsa.com server_names ~\.image\. ~\.baidu\.; if ($invalid_referer) { ...
- DIOCP-V5发布
DIOCP-v5开源项目 https://github.com/ymofen/diocp-v5 DIOCP-v5 0.0.1 2015-02-22 08:40:40 1.规范单元文件的命名,和 ...
- MXNET:分类模型
线性回归模型适用于输出为连续值的情景,例如输出为房价.在其他情景中,模型输出还可以是一个离散值,例如图片类别.对于这样的分类问题,我们可以使用分类模型,例如softmax回归. 为了便于讨论,让我们假 ...