<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5918579739413557982.post-4124123580950491199</id><published>2009-07-05T17:34:00.001+08:00</published><updated>2009-07-05T17:36:17.034+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='MozTW'/><category scheme='http://www.blogger.com/atom/ns#' term='音樂'/><category scheme='http://www.blogger.com/atom/ns#' term='35days'/><title type='text'>顛覆網路 35 天: HTML 5 版音樂播放器</title><content type='html'>&lt;p&gt;很久沒翻譯這系列文章，我發現&lt;a href="http://www.mijia.org/blog/?cat=166"&gt;米嘉&lt;/a&gt;也富奸化了… 不過他畢竟是比我維持得更久點，翻譯這類文章真的很考驗毅力的啊，大家要多給義務幫忙翻譯引介資訊的人一點鼓勵。&lt;/p&gt;&lt;p&gt;&lt;a href="http://hacks.mozilla.org/2009/06/audio-player-html5/"&gt;這篇文章&lt;/a&gt;裡討論的是利用 &lt;a href="https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox"&gt;HTML 5 的 audio 標籤&lt;/a&gt;與 JavaScript 合作製作一個音樂播放工具，其實 WM 在之前也&lt;a href="http://moztw.org/demo/audioplayer/"&gt;為 MozTW 製作了一個更炫的&lt;/a&gt;、所以害我每次看到這篇都沒什麼毅力翻譯… (藉口藉口！) 反正，先看看完成圖吧！&lt;/p&gt;&lt;div align="center" style="font-size: 120%;"&gt;
&lt;a href="http://hyper-metrix.com/misc/jai/" target="_blank"&gt;&lt;br/&gt;
在 Firefox 3.5 中開啟範例網頁&lt;br/&gt;
&lt;img width="451" height="309" class="aligncenter size-full wp-image-559" title="jai" alt="jai" src="http://hacks.mozilla.org/wp-content/uploads/2009/06/jai.jpg"/&gt;&lt;br/&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;這個範例還是很有價值的，相較於 WM 的炫爆範例，本例的作者採用了有趣的方式來實作：&lt;/p&gt;&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="html4strict" style="font-family:monospace;"&gt;&lt;code&gt;&lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #000000; font-weight: bold;"&gt;div&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;jai&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;

  &lt;span style="color: #009900;"&gt;&amp;lt;canvas &lt;span style="color: #000066;"&gt;id&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;jai-transport&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;width&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;320&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;height&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;20&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;canvas&amp;gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #000000; font-weight: bold;"&gt;ul&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;playlist&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;

    &lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #000000; font-weight: bold;"&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #000000; font-weight: bold;"&gt;a&lt;/span&gt; &lt;span style="color: #000066;"&gt;href&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;@F1LT3R - Cryogenic Unrest.ogg&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
        F1LT3R - Cryogenic Unrest
      &lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;a&lt;/span&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #009900;"&gt;&amp;lt;audio &lt;span style="color: #000066;"&gt;src&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;@F1LT3R - Cryogenic Unrest.ogg&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;.
    &lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #000000; font-weight: bold;"&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;

      &lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #000000; font-weight: bold;"&gt;a&lt;/span&gt; &lt;span style="color: #000066;"&gt;href&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;@F1LT3R - Ghosts in HyperSpace.ogg&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
        F1LT3R - Ghosts in HyperSpace
      &lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;a&lt;/span&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #009900;"&gt;&amp;lt;audio &lt;span style="color: #000066;"&gt;src&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;@F1LT3R - Ghosts in HyperSpace.ogg&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;.       
  &lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;ul&lt;/span&gt;&amp;gt;&lt;/span&gt;    

&lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;div&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;原始範例裡的程式碼有包含 Fallback 功能而且比較複雜一點，這裡把程式碼簡化比較容易說明。你發現了嗎？清單中所有音樂項目都只是由 HTML 的列表加上 CSS 樣式展現的，每個項目都與一般 HTML 頁面的連結一樣，可以加入書籤、複製連結位置等等。JavaScript 程式會找出 ID 為jai 之 DIV 標籤中所有的 AUDIO 標籤，接著又以 SVG 加上 JavaScript canvas 的方式繪製出操作介面&lt;/p&gt;&lt;p&gt;用這個方法要加入新樂曲相當方便，且要在任何網站上放入這個播放器也十分容易 —— 定義一個 canvas 與列表就可以了。(相應的 JavaScript 當然要嵌入囉)&lt;/p&gt;
&lt;p&gt;附帶一提的是，這個網頁上不但有原作者的說明，連所有的音樂也都是他自己寫的… 這也太猛了吧 XD&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5918579739413557982-4124123580950491199?l=blog.bobchao.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.bobchao.net/feeds/4124123580950491199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bobchao.net/2009/07/35-html-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5918579739413557982/posts/default/4124123580950491199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5918579739413557982/posts/default/4124123580950491199'/><link rel='alternate' type='text/html' href='http://blog.bobchao.net/2009/07/35-html-5.html' title='顛覆網路 35 天: HTML 5 版音樂播放器'/><author><name>柏強</name><uri>http://www.blogger.com/profile/06864196982157693291</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16900045016305722427'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry>