swfobject是什嗎?
它是一個開源的javascript工具類,我們可以在google code上很容易的找到它:http://code.google.com/p/swfobject/。它提供了一個統一的方式讓我們很輕鬆的在網頁中嵌入flash內容,而不用去考慮任何平台和瀏覽器的特殊標記,及它們對flash的支援能力。無論你是頁面製作、flash製作或者js的開發,你都可以找到一個適合的方式嵌入flash內容。其次,它還提供了一些API,讓你能夠去檢測當前瀏覽器對flash支援的一些資訊,讓你可以輕鬆的完成你的邏輯。據官方說檔案只有10kb,gzip之後只有3.9K。
如何用swfobject在頁面中嵌入flash?
它提供了兩種方法:靜態嵌入方法和動態嵌入。
靜態嵌入:它利用html標記嵌入flash內容和替代內容,然後選用js實現標記所不能完成的檢測、相容和動態替換等功能。
<!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 3</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.registerObject("myId", "9.0.115", "expressInstall.swf");
</script>
</head> <body> <div>
<object id="myId" 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>
上段代碼是直接從官方文檔處引來的,總的來說這種方式的嵌入分為三步:
1,利用html嵌入flash和替代內容,其中紫色代碼處就是。我們可以看到最外圍的object標籤,這是針對IE的,我們通過param標記來指定它的一些參數,內容的object標籤是對其它瀏覽器的,這裡也要指定flash的地址,並且還有一個<P>標記的替代內容,這是該js工具的一個亮點,首先,它可以在如果瀏覽器不支援flash的情況下,顯示這裡的內容,保證你的頁面在任何情況下都是完整的,並且是可控制的,第二,我們都知道搜尋引擎是不能索引flash內的內容的,我們在替代內容加入你想要索引的內容,這樣更利於SEO。
2,引入該js檔案,藍色代碼處。
3,紅色代碼處,告訴js你要讓它幫你完成相容等工作的標記,第一個參數是標記object的ID,第二個是你要求的flash的版本號碼,是按major.minor.release.build這樣的形式,js只管前三個,如果是只要是第9個大版本就行,用9而不是9.0.0。第三個參數可選,它顯示的是如果版本不支援,去下載特定版本時顯示的flash內容,該方案裡包含了一個flash,當然你也可以自訂。其實,還有一個可選的參數,傳一個回呼函數,不管是載入完成時調用的,無論成功或失敗都會調用的。
你可以重複1、3處的代碼來嵌入更多的flash內容。
動態嵌入:這種只需要你加入替代的內容,然後js會幫你完成flash的嵌入(當前瀏覽器支援並沒有禁用js,flash也處於可用狀態的情況下)。
<!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 dynamic embed - step 3</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0");
</script>
</head> <body>
<div id="myContent">
<p>Alternative content</p>
</div>
</body></html>
第一步,紫色代碼處,只是替代內容。
第二步,引入js,藍色代碼處。
第三步,調用。第一個參數,嵌入的flash內容,第二個參數替代內容的ID,第三、四個flash的寬、高,第五個要求的版本號碼,第6個可選,去下載時的顯示的動畫,第7個可選要加入實際的flash的flashvars參數,第8個可選,要加入的params參數,第9個可選要加入的object的屬性參數,第10個可選,回呼函數。
其中7、8、9參數可以
var flashvars = {};flashvars.name1 = "hello";flashvars.name2 = "world";flashvars.name3 = "foobar";var params = {};params.menu = "false";var attributes = {};attributes.id = "myDynamicContent";attributes.name = "myDynamicContent";
這樣的形式出現,當然你也可以傳個{}過去,更詳細的介紹還是去google code吧。
這裡只是描述了嵌入flash的簡單的方法,但是swfobject的功能絕不僅如此,它提供的其它api可以讓你輕易的實現選擇性嵌入等等。