2006年12月15日

用 JavaScript 切換網頁的 Flash

我在部落格的首頁上放了一個 Blog 音樂盒的欄位 (為部落格加上合法授權的音樂盒),今天想加個選單選擇要播放的音樂盒。原本理所當然地直接改變 embed 元素的 src 屬性的內容,結果毫無反應。上網查了一下發現這功能的支援依瀏覽器而異,最通用方式竟然是用 innerHTML 重新寫入 HTML code 的傳統用法。


Macromedia Flash Support Center 的《Flash Methods》中提到,可以用 HTML DOM 的 getElementById() 取得 Flash object 後調用 Flash object 的方法,其中 LoadMovie() 可以指派 (改變) Flash object 播放的內容,還有 Play(), StopPlay(), Rewind() 等播放行為可用。 Mozilla developer center 的《Scripting Plugins: Macromedia Flash》附和 Macromedia Flash Support Center 的說法。於是我寫下下列的程式。

然而測試結果令人遺憾,我在 Firefox v1.5 版中發生錯誤, Firefox 回報 mymusicbox.LoadMovie() 不是一個函數方法。包括 Play(), Rewind() 等方法都不能用。但是這些方法在 IE6 中可以運作。

既然官方文件推蔫的方法行不通,那還是走傳統路子,用 innerHTML 重新寫入 HTML code 吧。於是將上面的程式再改寫,改寫部份列於下。

Ok, 這個傳統方法果然有效, Firefox 跟 IE 都接受了, Opera 應該也行。雖然 innerHTML 不在 W3C HTML DOM 的規範中,但出現甚早 (IE4 首見) ,使用方式直覺,各瀏覽器普遍實作。目前看來,相容性應該沒問題。只是互動性差了些,不能用 JavaScript 控制 Flash object 的播放動作。


Posted by shirock at 樂多Roodo! │23:13 │回應(0)引用(1)JavaScript
樂多分類:網路/3C 共同主題:部落格小玩意 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/2577712
引用列表:
XSPF Web Music Player (Flash) 是由 Fabricio Zuardi 利用 Adobe Flash 所設計的一套 開放源碼的 Web 音樂播放器,該軟體是以 BSD License 釋出。
自製 Blog 音樂盒, Web music player of Open Source Software【石頭閒語】 at 2006年12月22日 01:51