标签:
swfobjectit |
翻译:SWFObject 2.0官方文档 12.27.07 | 2条评论 SWFObject是一种易用的、符合标准的在网页中嵌入flash对象的方法,你只需要在网页中引用一个小巧的js文件。相信很多人都使用过SWFObject 1.5或者UFO来动态的嵌入flash对象,那么SWFObject 2.0和SWFObject 1.5以及UFO有什么关系呢?SWFObject 2.0又有什么新的特性和优势呢?这篇SWFObject 2.0官方文档中文版将会告诉你答案。 原文:http://code.google.com/p/swfobject/wiki/SWFObject_2_0_docu
翻译:SWFObject 2.0官方文档
12.27.07 | 2条评论
SWFObject是一种易用的、符合标准的在网页中嵌入flash对象的方法,你只需要在网页中引用一个小巧的js文件。相信很多人都使用过SWFObject
1.5或者UFO来动态的嵌入flash对象,那么SWFObject 2.0和SWFObject
1.5以及UFO有什么关系呢?SWFObject
2.0又有什么新的特性和优势呢?这篇SWFObject
2.0官方文档中文版将会告诉你答案。
原文:http://code.google.com/p/swfobject/wiki/SWFObject_2_0_documentation
翻译:farthinker
主要内容:
SWFObject 2.0与SWFObject
1.5和SWFFix有什么关系?
为什么你应该使用SWFObject?
怎样使用SWFObject?
怎样用符合标准的标签嵌入Flash内容并且用SWFFix来解决出现的问题(第一种嵌入方法)
怎样在一个HTML页面中嵌入多个SWF文件?(采用第一种嵌入方法)
怎样在JavaScript中引用活动的object元素?(采用第一种嵌入方法)
怎样使用SWFObject动态的嵌入Flash内容?(第二种嵌入方法)
怎样在一个HTML页面中嵌入多个SWF文件?(采用第二种嵌入方法)
怎样使用SWFObject的JavaScript类库获得Flash Player的相关信息?
SWFObject v2.0与其他一些相似的类库,例如SWFObject
v1.5和UFO,相比有什么不同?
从SWFObject v1.5迁移到SWFObject v2.0的注意事项
从UFO迁移到SWFObject v2.0的注意事项
使用SWFObject会有什么风险?
SWFObject支持MIME类型application/xhtml+xml吗?
SWFObject 2.0与SWFObject
1.5和SWFFix有什么关系?
SWFObject v2.0是原来的项目SWFFix[ http://code.google.com/p/swffix/
]的新名字。它是一个由Geoff Stearns、Michael Williams和Bobby van der
Sluis发起的开源项目,以创造下一代用于嵌入flash内容的JavaScript类库,并取代SWFObject
v1.5 [ http://blog.deconcept.com/swfobject/ ]、the Flash player
detection kit [
http://www.adobe.com/products/flashplayer/download/detection_kit/
]和UFO [ http://www.bobbyvandersluis.com/ufo/ ]为目标。
为什么你应该使用SWFObject?
一篇A List Apart上的文章Flash Embedding Cage Match描述了SWFObject
v2.0背后的基本原理,以及为什么它比其他可用的Flash嵌入方式更好。
怎样使用SWFObject?
SWFObject提供了两种嵌入Flash内容的方法:
用符合标准的标签来嵌入Flash内容和替换内容(译者注:替换内容指Flash插件没有安装时需要显示的内容),并且用JavaScript来解决使用标签嵌入时出现的一些问题(这种方法也被称之为静态发表(static
publishing))。
使用标准的标签插入替换内容,并用unobtrusive(译者注:这个词的翻译争议比较大,暂且不译,可以理解为低调的、不唐突的)的JavaScript来嵌入Flash内容(与以前版本的SWFObject以及UFO很相似,这种方法也被称之为动态发表(dynamic
publishing))。
与第二种方法相比,第一种方法的优势在于:
更能实际的控制对符合标准标签的创作。(The
actual authoring of standards compliant markup is promoted.)
插入Flash内容的机制不再依赖于JavaScript,所以这种方法适当的“降级”了。
如果你安装了Flash插件,但是JavaScript被禁用了或者浏览器并不支持JavaScript,你仍然能够看到你的Flash内容。
Flash将能够在那些对JavaScript支持较弱的设备上运行,例如Sony
PSP。
像RSS阅读器这样的自动化的工具能够读取Flash内容。
与第一种方法相比,第二种方法的优势在于:
更容易被编写和维护,因为它显得更简洁,没有包含多余的代码。
避免了通过“点击激活”的机制来激活Internet Explorer 6+和Opera
9+中的Flash内容。
怎样用符合标准的标签嵌入Flash内容并且用SWFFix来解决出现的问题(第一种嵌入方法)
第一步:用符合标准的标签同时嵌入Flash内容和替换内容
SWFObject的基本标签使用了嵌套object标签的方法(带有专用于Internet
Explorer的条件注释)[
http://www.alistapart.com/articles/flashembedcagematch/
]来保证仅通过标签实现最优化的跨浏览器支持,同时使其符合标准,并且支持替换内容[
http://www.swffix.org/testsuite/ ]:
<!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">
</html>
注意:嵌套object标签的方法要求两次定义object标签(外层的object为Internet
Explorer定义,内层的object为其他浏览器定义),所以你也需要两次定义你的object属性(attributes)和嵌套的param元素。
必须的属性(attributes):
classid(只需为外层object元素定义,值总是等于“clsid:D27CDB6E-AE6D-11cf-96B8-444553540000”)
type(只需为内层object元素定义,值总是等于“application/x-shockwave-flash”)
data(只需为内层object元素定义,指定SWF文件的URL)
width(内外层object都需要定义,指定这个SWF的宽)
width(内外层object都需要定义,指定这个SWF的高)
必须的param元素:
movie(只需为外层object元素定义,指定SWF文件的URL)
注意:我们建议不使用codebase属性(attributes)来指向Adobe服务器上的Flash插件安装地址,因为它违背了只将访问限制在当前文档域的规范。我们推荐使用带有精巧提示信息的替换内容,这样用户将获得更好的Flash插件下载体验。
怎样使用HTML来配置你的Flash内容?
你可以为你的object元素添加下面这些常用的可选属性(attributes)[
http://www.w3schools.com/tags/tag_object.asp ]:
id
name
class
align
你可以使用下面这些专用于Flash的可选param元素[
http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12701
]:
play
loop
menu
quality
scale
salign
wmode
bgcolor
base
swliveconnect
flahvars
devicefont [
http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_13331
]
allowscriptaccess [
http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_16494
]
seamlesstabbing [
http://www.adobe.com/support/documentation/en/flashplayer/7/releasenotes.html
]
allowfullscreen [
http://www.adobe.com/devnet/flashplayer/articles/full_screen_mode.html
]
allownetworking [
http://livedocs.adobe.com/flash/9.0/main/00001079.html ]
为什么你应该使用替换内容(alternative content)?
object元素允许你将替换内容嵌套在其中,如果Flash插件没有安装或者不被支持那么这些替换内容就会被显示出来。由于这些替换内容能被搜索引擎很好的识别,这使它成为一个创建对搜索引擎友好的网页内容的好工具。总之,当你想创建一个能够让不使用插件的用户[
http://www.adobe.com/devnet/flash/articles/progressive_enhancement_03.html
]也可以访问的网页内容,创建一个对搜索引擎友好[
http://www.adobe.com/devnet/flash/articles/progressive_enhancement_04.html
]的网页内容,或者告诉访问者他们能获得更好的Flash插件下载体验,你就应该使用替换内容。
使用嵌套object的方法有哪些缺点?
当你仔细观察这个标签方法对跨浏览器的支持时,你会发现它有下面一些不足之处:
Safari
1.2.2或者更低的版本将忽略所有的嵌套param元素。
Windows XP SP2+上的Internet Explorer 6+或者Opera
9+会包括一个“点击激活”的机制。
老版本的Flash
Player有一定的风险让你的Flash内容被错误的显示或者根本不被显示。
SWFObject的JavaScript类库会尝试解决这些问题。你最好将它看作一个附加的工具(add-on),它的基本目标是解决使用符合标准标签时出现的问题,同时增加提高用户体验的功能。
注意:目前所有已知的用来避免静态SWF内容的“点击激活”机制的变通方法,都存在严重的缺陷。动态发表(dynamic publishing,第二种嵌入方法)是目前唯一真正可用的避免激活活动内容的解决方案。
第二步:在HTML的head标签中包括SWFObject的JavaScript类库
SWFObject的JavaScript类库由一个外部JavaScript文件(大小:10.7Kb,GZIPed:3.5Kb)组成。SWFObject会在外部JavaScript文件被加载后立即被执行,并且对于那些支持DomLoad事件的浏览器,例如
IE、Firefox、Safari和Opera
9+,SWFObject将会在DOM被加载后完成所有的DOM操作,而如果浏览器不支持DomLoad事件,所有DOM操作将会在页面的load事件被触发后执行。
<!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">
</html>
第三步:用SWFObject类库注册你的Flash内容并告诉SWFObject怎么样处理这些内容
首先为Flash内容的外层object标签添加一个独特的id属性,然后添加swfobject.registerObject方法:
第一个参数(String,必须的)指定object标签中使用的id。
第二个参数(String,必须的)指定你发布的Flash内容对应的Flash
Player版本。它将激活Flash版本监测,用来决定是显示Flash内容还是通过一些DOM操作来显示替换内容。表示Flash版本的数字通常由四部分组成:major.minor.release.build,但是SWFObject只识别前3个数字,所以“WIN
9,0,18,0”(IE)或者“Shockwave Flash 9
r18”(其他浏览器)都会被翻译为“9.0.18”。
第三个参数(String,可选的)可以用来激活Adobe express install [
http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
],并指定express install SWF文件的URL。Express
install将会在所需要的Flash
Player版本不可用的时候,显示一个标准化的Flash插件下载对话框,用来替代你的Flash内容。一个默认的expressInstall.swf文件被一起打包在了项目中。项目中也包含了expressInstall.fla和其他AS源文件(在SRC文件夹中),你可以用它们用性设计的作创建自定义的express
install体验。
<!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">
</html>
提示:使用SWFObject 2.0 HTML和JavaScript代码生成器(SWFObject 2.0 HTML and JavaScript generator)来帮助你创建代码:[ http://code.google.com/p/swfobject/wiki/SWFObject_2_0_generator ]。
怎样在一个HTML页面中嵌入多个SWF文件?(采用第一种嵌入方法)
请重复第一步到第三步(在“怎样用符合标准的标签嵌入Flash内容并且用SWFFix来解决出现的问题(第一种嵌入方法)”中提到的)来添加任意多个SWF文件到你的页面。