<embed> tag 來處理, 迫使讀者要在特定環境加特定的軟件才可以播放. [後補: 為免誤會, 我在此呼籲... 請各位必須避免在讀者不知情的情況下播放音樂. 例如是當進入頁面時自動播放音樂之類. 當你嚇到使用者的一刻就是他們離開的一刻.]
<embed> 的最大問題, 是它並不是一個 HTML 4.01 的 tag. 不過這個 tag 在 HTML 5 重新出現, 結果就像是把不負責任的行為合理化一樣...<embed> 基本用途就是 embeded content, 亦即是瀏覽器會交由 plugin 去處理內容, 一般來說無法控制顯示的結果. 例如你 embed 的是一個 mp3 檔案的話, 用 IE 時可能會出現 Windows Media Player plugin, 用 Safari 時就大概會出現 Quicktime plugin. 要是使用者沒有安裝 plugin, 又沒有安裝權限的話, 那就只有說句不好意思了..比較好的選擇, 是 HTML 4.01 已有的
<object> tag. 利用 <object> tag 配合 <paramgt; tag 的話, 可以控制的東西比較多. 例如是指定使用某一個 plugin, 要某一類的控制項等等. 可惜的是, 這個方法仍然是局限於 plugin 的使用. 而且, 不同的 plugin, 甚至是不同的瀏覽器所需要的設定都不同. 基於方便使用者的考量, 我會傾向選擇一個大部份使用者都有安裝的 plugin 來使用, 例如是, Flash.
利用 Flash-based 的音樂播放器. 好處是當大部份使用者都有安裝 Flash player 的情況下, 幾乎可以肯定大部份讀者都能夠享用你的音樂. 而且, 載入 Flash player 的 HTML 已經比常成熟, 對於 developer 來說也相當方便.
當然, 在 HTML 5 的年代, 我們可以用
<audio> tag 解決以上一切問題.... 是嗎?使用
<audio> tag 的結果, 是瀏覽器會自行處理及播放音樂檔. Plugin 的問題是解決了, 但是瀏覽器的問題始終存在. 其中最大的問題是, 現時沒有一種音樂格式是全部主流瀏覽器都可以播放的. 例如說 Firefox 3.x 及 Opera 不會播放 mp3, IE 9 及 Safari 5 不會播放 ogg (要加 plugin). 難道要把音樂轉成巨大的 wave 格式嗎?現時最好的方法, 就是同時提供 ogg 及 mp3 格式. 至於將來, 就看完全開放的 WebM 格式是否能夠普及化了. 不過當然還要顧及未能支援 HTML 5 的瀏覽器, 要提供 Flash player 作後備之用.
好了, 長篇大論之後就是萬眾期待的 code 了...
<audio> tag 本身可以加 src 屬性. 不過因為要顧及其他 browser 的關係, 就改為加入多個 <source> tag 讓瀏覽器決定. 其中的 type 屬性 可有可無. 如果瀏覽器不支援 <audio> tag, 就會按 <audio> tag 內的 Flash player code 顯示(或以任何其他信息取代).有一點必需注意的, 就是
<audio> tag 的 controls 屬性會令瀏覽器顯示控制項. 而這個控制項的樣式全由瀏覽器決定. 如果要自行設計控制項的話, 就必須自行使用 HTML + CSS 設計, 然後用 JavaScript 來控制. 使用 JavaScript 可以控制播放的位置及音量等, 這亦是相比起用 Flash player, 使用 HTML 5 播放音樂的最大優點.有時候, 我們要知道究竟現在的瀏覽器是否支援
<audio> tag. 我們可以利用 audio element 的 canPlayType function. 這個 function 本身可以查詢瀏覽器是不支援某一類的媒體, 只要這個 function 存在, 就表示瀏覽器支援 <audio> tag.舉個例, 假如 HTML 的部份是這樣:
而我們希望, 當瀏覽器不支援
<audio> tag 的時候, 就提整個 <div> 的內容改為一個 Flash player 的話, 可以這樣做:
var audioElem = document.getElementById("audioPlayer");
if(!audioElem.canPlayType) {
loadFlashPlayer("audio");
}
這裡假設了有一個叫
loadFlashPlayer 的 function 會在 element id 叫 audio 的 element 載入一個 Flash player. 實際情況視乎選用的 Flash player 而定.只不過是一個
<audio> tag, 也有這麼多的考慮. 可想而知當要用 <video> tag 時會有幾頭痛. 不知道將來 WebM 格式如果能夠普及的話, 會不會改善問題呢? 就讓我們拭目以待吧.
