<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>色胚子部落 &#187; html5</title>
	<atom:link href="http://blog.colorbase.tw/tag/html5/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.colorbase.tw</link>
	<description>訊息多變的時代裡，需要多學習多思考</description>
	<lastBuildDate>Mon, 15 Aug 2011 03:29:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>檢測訪客瀏覽器對 HTML5 與 CSS3 的支援程度</title>
		<link>http://blog.colorbase.tw/web-development/1099</link>
		<comments>http://blog.colorbase.tw/web-development/1099#comments</comments>
		<pubDate>Sun, 23 May 2010 02:26:00 +0000</pubDate>
		<dc:creator>阿育</dc:creator>
				<category><![CDATA[Web開發]]></category>
		<category><![CDATA[cross-browser]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[detecting]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[modernizr]]></category>
		<category><![CDATA[判斷]]></category>
		<category><![CDATA[檢測]]></category>
		<category><![CDATA[瀏覽器]]></category>
		<category><![CDATA[跨瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.colorbase.tw/web-development/1099</guid>
		<description><![CDATA[由於各主流瀏覽器對於 HTML5 與 CSS3 中支援的程度不一，如果我們想要搶先嘗試使用它們的的新功能，卻又想要在各種瀏覽器中保持一定的可用性，那麼勢必要在 Javascript 中撰寫相關的判斷程式碼來進行判斷瀏覽器是否支援新特性，如果訪客的瀏覽器支援，則使用新功能，而反之則執行替代的程式碼或者提示使用者所使用的瀏覽器將會有部分進階功能無法使用。
 
關於目前各主流瀏覽器的支援情況可參考之前的文章 HTML5 與 CSS3 準備好了嗎？
自行撰寫 Javascript 進行 HTML5 與 CSS3 的檢測
如果我們使用到的 HTML5 與 CSS3 新特性並不多，則可以自行撰寫相關的檢測碼來進行判斷，至於該如何檢測，則可參考：    The All-In-One Almost-Alphabetical No-Bullshit Guide to Detecting Everything
文章中除了羅列一大堆 HTML5 等檢測的片段程式碼，也提到了一個很好用的函式庫 Modernizer。

Modernizr
 
Modernizr 是一個非常小巧的函式庫 (大約 8 KB，gzip壓縮後大約3.9 KB)，它用於檢測瀏覽器對於 HTML5 與 CSS3 支援程度，其首頁也提供了一份即時的檢測表，當使用不同的瀏覽器進入該網站時，將可看到不同的檢測結果，這個檢測表其實也可以當做一種瀏覽器支援參考，當安裝了新版本的瀏覽器時只要進入這個網站就可以即時知道瀏覽器是否有增加了什麼 HTML5 或 CSS3 的新功能。
先讓&#160; IE 支援 HTML5 的新標籤
由於 IE9 ...]]></description>
			<content:encoded><![CDATA[<p>由於各主流瀏覽器對於 HTML5 與 CSS3 中支援的程度不一，如果我們想要搶先嘗試使用它們的的新功能，卻又想要在各種瀏覽器中保持一定的可用性，那麼勢必要在 Javascript 中撰寫相關的判斷程式碼來進行判斷瀏覽器是否支援新特性，如果訪客的瀏覽器支援，則使用新功能，而反之則執行替代的程式碼或者提示使用者所使用的瀏覽器將會有部分進階功能無法使用。</p>
<p> <span id="more-1099"></span>
<p>關於目前各主流瀏覽器的支援情況可參考之前的文章 <a href="http://blog.colorbase.tw/web-development/1070" target="_blank">HTML5 與 CSS3 準備好了嗎？</a></p>
<h2>自行撰寫 Javascript 進行 HTML5 與 CSS3 的檢測</h2>
<p>如果我們使用到的 HTML5 與 CSS3 新特性並不多，則可以自行撰寫相關的檢測碼來進行判斷，至於該如何檢測，則可參考：    <br /><a href="http://diveintohtml5.org/everything.html" target="_blank">The All-In-One Almost-Alphabetical No-Bullshit Guide to Detecting Everything</a></p>
<p>文章中除了羅列一大堆 HTML5 等檢測的片段程式碼，也提到了一個很好用的函式庫 Modernizer。</p>
</p>
<h2>Modernizr</h2>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="modernizr" border="0" alt="modernizr" src="http://blog.colorbase.tw/wp-content/uploads/2010/05/modernizr.jpg" width="400" height="286" /> </p>
<p><a href="http://www.modernizr.com/" target="_blank">Modernizr</a> 是一個非常小巧的函式庫 (大約 8 KB，gzip壓縮後大約3.9 KB)，它用於檢測瀏覽器對於 <strong>HTML5</strong> 與 <strong>CSS3</strong> 支援程度，其首頁也提供了一份即時的檢測表，當使用不同的瀏覽器進入該網站時，將可看到不同的檢測結果，這個檢測表其實也可以當做一種瀏覽器支援參考，當安裝了新版本的瀏覽器時只要進入這個網站就可以即時知道瀏覽器是否有增加了什麼 HTML5 或 CSS3 的新功能。</p>
<h2>先讓&#160; IE 支援 HTML5 的新標籤</h2>
<p>由於 IE9 之後才認得 HTML5 的新標籤，因此若要讓舊版本的IE也認得 HTML5的新標籤，則可以使用<a href="http://code.google.com/p/html5shiv/" target="_blank">html5shiv</a>來讓 IE 支援 HTML5 的新標籤，使用方式為加入以下的語法於&lt;head&gt;之間。</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:df468869-4434-4e78-bfbb-73fdaa23c52c" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;!--[if IE]&gt;
&lt;script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"&gt;&lt;/script&gt;
&lt;![endif]--&gt;</pre>
</div>
<h2>使用 Modernizr </h2>
<p>Modernizr 的使用方式很簡單，只需於&lt;head&gt;之間使用&lt;script&gt;標籤引入這個函式庫即可：</p>
<p class="tip">&lt;script src=&quot;modernizr.min.js&quot;&gt;&lt;/script&gt;</p>
<p>接著我們就可以在 Javascript 或 CSS 中做相對應的判斷及處理。</p>
</p>
<h3>在 Modernizr 中使用 Javascript 判斷</h3>
</p>
<p>Modernizr 載入後，即可使用 Modernizr.特性名稱的方式來判斷瀏覽器的支援，例如以下為判斷瀏覽器是否支援 canvas。</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6d8c5b01-69b5-4f9a-86bb-4873d0262736" class="wlWriterEditableSmartContent">
<pre name="code" class="js:nogutter">if (Modernizr.canvas) { //判斷瀏覽器是否支援 canvas
	alert("支援");
}else{
	alert("不支援");
}</pre>
</div>
<h3>在 Modernizr 中使用 CSS 判斷</h3>
<p>Modernizr 使用了一個非常聰明的方法來達成 CSS 判斷的功能，它在載入完成後將會自動檢測瀏覽器的支援情況並將其寫入 &lt;html&gt; 標籤的 class 屬性，其類別名稱的格式為：</p>
<p class="tip">支援：<strong>特性名稱</strong></p>
<p class="tip">不支援：<strong>no-特性名稱</strong></p>
</p>
<p><strong></strong></p>
<p>例如當瀏覽器支援支援 canvastext 時，&lt;html&gt;標籤的 class 屬性中將會有一個 <strong><font color="#800000">canvastext</font></strong> 值。</p>
<p>相反的當瀏覽器不支援 canvastext 時，&lt;html&gt;標籤的 class 屬性中將會有一個 <strong><font color="#800000">no-canvastext</font></strong>值。</p>
<p>如此一來我們就可以輕易的使用 CSS Selector 來做出相對應的判斷，例如，在 HTML 中：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e0726f3c-2d84-4eae-aa0c-ab7c662515c4" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;title&gt;Modernizr Test&lt;/title&gt;
	&lt;link rel="stylesheet" href="style.css" type="text/css" media="screen"&gt;
	&lt;!--[if IE]&gt;
	&lt;script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"&gt;&lt;/script&gt;
	&lt;![endif]--&gt;
	&lt;script src="modernizr.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;div id="canvasContainer"&gt;
		 &lt;canvas id="c"&gt;&lt;/canvas&gt;
		 &lt;p class="supported"&gt;瀏覽器支援 canvastext&lt;/p&gt;
		 &lt;p class="noSupported"&gt;瀏覽器不支援 canvastext！&lt;/p&gt;
	&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>在 style.css 中，透過以下的 CSS，在支援 canvastext 中將顯示「<strong>瀏覽器支援 canvastext</strong>」，反之則顯示「<strong>瀏覽器不支援 canvastext！</strong>」。</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:41348c61-527e-4e53-a9ce-466db63c7a6c" class="wlWriterEditableSmartContent">
<pre name="code" class="css:nogutter">#canvasContainer p{
	display: none;
}

.canvastext #canvasContainer .supported {
	display: block;
}

.no-canvastext #canvasContainer .noSupported {
   display: block;
}</pre>
</div>
<p><a href="http://blog.colorbase.tw/html5/modernizr/" target="_blank">點我觀看 Modernizr CSS Selector 檢測範例</a></p>
<p>同理，若要利用 CSS 判斷瀏覽器是否支援 video 則可使用「.video / .no-video」兩個 CSS 類別。</p>
<p>更多 Modernizr 支援的 HTML5 與 CSS3 特性檢測，請參閱其<a href="http://www.modernizr.com/docs/" target="_blank">使用手冊</a>。</p>
<h2>需注意的事情</h2>
<ol>
<li>Modernizr 只能提供檢測而不能替瀏覽器增加新功能以達成兼容。 </li>
<li>若要兼容 video 可使用 <a href="http://code.google.com/p/video4all/">video4all</a>來達成，更多詳情可參考 <a href="http://blog.colorbase.tw/web-development/947" target="_blank">開始HTML5 – Video</a>。 </li>
<li>若要讓 IE 6, 7, 8 支援 CSS3 可使用<a href="http://www.fetchak.com/ie-css3/" target="_blank">CSS3 support for IE</a>來達成。 </li>
</ol>
<h2>相關連結與參考文章</h2>
<ul>
<li><a href="http://www.modernizr.com/" target="_blank">Modernizr</a> </li>
<li><a href="http://diveintohtml5.org/everything.html" target="_blank">The All-In-One Almost-Alphabetical No-Bullshit Guide to Detecting Everything</a> </li>
<li><a href="http://diveintohtml5.org/detect.html" target="_blank">Detecting HTML5 Features</a> </li>
<li><a href="http://code.google.com/p/video4all/">video4all</a> </li>
<li><a href="http://www.fetchak.com/ie-css3/" target="_blank">CSS3 support for IE</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.colorbase.tw/web-development/1099/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>HTML5 與 CSS3 準備好了嗎？</title>
		<link>http://blog.colorbase.tw/web-development/1070</link>
		<comments>http://blog.colorbase.tw/web-development/1070#comments</comments>
		<pubDate>Sun, 16 May 2010 04:20:35 +0000</pubDate>
		<dc:creator>阿育</dc:creator>
				<category><![CDATA[Web開發]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[thinking]]></category>
		<category><![CDATA[trend]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[網路趨勢]]></category>
		<category><![CDATA[網頁設計]]></category>
		<category><![CDATA[網頁開發]]></category>
		<category><![CDATA[趨勢]]></category>

		<guid isPermaLink="false">http://blog.colorbase.tw/web-development/1070</guid>
		<description><![CDATA[HTML5 與 CSS3 不斷出現各種令人驚艷的應用，引起了業界的高度關注，它把許多原本屬於 Flash 的特殊應用搬到了 Web 標準中，而標準化的好處在哪我想不需要我多說了，但 HTML5 與 CSS3 真的準備好了嗎？
從 HTML &#38; CSS3 Readiness 這份圖表可以很容易看出一些關鍵，它把 HTML5 與 CSS3 從 2008 年到 2010 年各個主流瀏覽器的支援情形以扇形區色塊圖的方式呈現，每個瀏覽器及渲染引擎都有自己的色系。

目前支援度最高的新特性為 Drag and Drop / @font-face / contenteditable 。
目前支援度最佳的瀏覽器為 Chrome 與 Safari。
目前支援度最差的瀏覽器為 IE 系列。


HTML &#38; CSS3 Reandiness
HTML5 與  CSS3 現在最需要什麼？
良好的集成式開發環境
我想對於開發人員而言，最需要的還是工具，因為純手工編製複雜的 Web 應用可真是一件吃力不討好的工作，但我相信只要有市場便不怕沒工具，之前 Adobe CTO Kevin Lynch 也已經說要為HTML5開發工具了，我也相信在公開的標準規範之下將會有更多軟體開發商投入精力創造出更好用的產品。
廣泛的普及
既然工具的問題排除了，那麼剩下的便是普及性的問題了，但很顯然的它們仍然還沒完全準備好，在 When can I use ...]]></description>
			<content:encoded><![CDATA[<p>HTML5 與 CSS3 不斷出現各種令人驚艷的應用，引起了業界的高度關注，它把許多原本屬於 Flash 的特殊應用搬到了 Web 標準中，而標準化的好處在哪我想不需要我多說了，但 HTML5 與 CSS3 真的準備好了嗎？</p>
<p>從 <a href="http://html5readiness.com/" target="_blank">HTML &amp; CSS3 Readiness</a> 這份圖表可以很容易看出一些關鍵，它把 HTML5 與 CSS3 從 2008 年到 2010 年各個主流瀏覽器的支援情形以扇形區色塊圖的方式呈現，每個瀏覽器及渲染引擎都有自己的色系。<span id="more-1070"></span></p>
<ol>
<li>目前支援度最高的新特性為 Drag and Drop / @font-face / contenteditable 。</li>
<li>目前支援度最佳的瀏覽器為 Chrome 與 Safari。</li>
<li>目前支援度最差的瀏覽器為 IE 系列。</li>
</ol>
<p><a href="http://blog.colorbase.tw/wp-content/uploads/2010/05/html5_css3_readiness.jpg"><img style="display: inline; border-width: 0px;" title="html5_css3_readiness" src="http://blog.colorbase.tw/wp-content/uploads/2010/05/html5_css3_readiness_thumb.jpg" border="0" alt="html5_css3_readiness" width="400" height="286" /></a></p>
<p><a href="http://html5readiness.com/" target="_blank">HTML &amp; CSS3 Reandiness</a></p>
<h2>HTML5 與  CSS3 現在最需要什麼？</h2>
<h3>良好的集成式開發環境</h3>
<p>我想對於開發人員而言，最需要的還是工具，因為純手工編製複雜的 Web 應用可真是一件吃力不討好的工作，但我相信只要有市場便不怕沒工具，之前 <a href="http://techcrunch.com/2010/05/05/adobe-cto-kevin-lynch-were-going-to-make-the-best-tools-in-the-world-for-html5/" target="_blank">Adobe CTO Kevin Lynch 也已經說要為HTML5開發工具</a>了，我也相信在公開的標準規範之下將會有更多軟體開發商投入精力創造出更好用的產品。</p>
<h3>廣泛的普及</h3>
<p>既然工具的問題排除了，那麼剩下的便是普及性的問題了，但很顯然的它們仍然還沒完全準備好，在 <a href="http://caniuse.com/" target="_blank">When can I use</a> 裡面列出了目前HTML5個主流瀏覽器的支援情況，雖然這是一個支援度比較表，但命名更像是在抱怨。</p>
<h2>幾種 HTML5 與 CSS3 支援度參考資料</h2>
<ul>
<li><a href="http://html5readiness.com/" target="_blank">HTML &amp; CSS3 Reandiness</a></li>
<li><a href="http://www.findmebyip.com/" target="_blank">findmebyIP</a></li>
<li><a href="http://caniuse.com/" target="_blank">When can I use</a></li>
<li><a href="http://www.quirksmode.org/css/contents.html" target="_blank">CSS contents and browser compatibility</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.colorbase.tw/web-development/1070/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>開始HTML5 &#8211; Video</title>
		<link>http://blog.colorbase.tw/web-development/947</link>
		<comments>http://blog.colorbase.tw/web-development/947#comments</comments>
		<pubDate>Tue, 27 Apr 2010 10:04:44 +0000</pubDate>
		<dc:creator>阿育</dc:creator>
				<category><![CDATA[Web開發]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js-api]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://blog.colorbase.tw/?p=947</guid>
		<description><![CDATA[在HTML5以前若我們要在網頁中播放影片時，需要使用ActiveX或Plug-in的方式來達到，例如：Flash Player、QuickTime等等，但在HTML5之後這些東西成了標準，我們不需再透過額外的外掛來達成，相信這也意味著Web的相關應用將更趨於豐富化。
現在就連 YouTube 也已經測試使用HTML5的Video來做為影片播放介面，因此在實際應用上雖然我們並不一定要走在時代的尖端，但了解一下新技術是有其必要的。
 
&#160; 
HTML 5&#160; Video 基礎
基本的 HTML5 Video 標記如下，我們可以透過 src 屬性來標明影片的URL：

&#60;video src=影片URL &#62;很抱歉！您的瀏覽器不支援HTML5 Video&#60;/video&#62;

雖然上面的方式很簡短，但可惜的是因為目前各家瀏覽器在HTML5 Video的影片格式方面支援不一致，而導致我們若我們想要影片能夠兼容各種主流瀏覽器，我們必須提供這兩種主要的HTML5 Video 格式的影片檔案：

Theora/Vorbis (*.ogg ; *.ogv) 
H.264 / AAC (*.mp4 ; *.m4v) 

所以我們必須提供兩種格式讓瀏覽器自行依照自己支援的格式下載並播放，因此我們加入 &#60;source&#62; 來定義多個影片來源，而不是用 &#60;video&#62; 的 src 屬性，例如：

&#60;video&#62;
	&#60;source src="video.ogg"&#62;
	&#60;source src="video.m4v"&#62;
	很抱歉！您的瀏覽器不支援HTML5 Video
&#60;/video&#62;

&#60;video&#62; 的屬性
&#60;video&#62; 除了可以使用 src 屬性來標明影片的URL，我們還可以使用其他的屬性來定義 &#60;video&#62; 的基本樣式或行為。
src 
影片的URL。
autoplay
影片是否自動播放，預設為 false。
controls
是否顯示播放控制列，若設定為ture將會顯示播放控制列，這個控制器的樣式是依據瀏覽器而定的，預設為 false。
width
&#60;video&#62; 所佔寬度。
height 
&#60;video&#62; 所佔高度。
poster 
這如同一些以Flash實現的播放器所提供的「預覽圖」功能一樣，可於此指定預覽圖的URL，當影片尚未開始播放時，將會先顯示這裡所指定的圖片。
其他的屬性
&#60;video&#62;的屬性還有 loopend / loopstart ...]]></description>
			<content:encoded><![CDATA[<p>在HTML5以前若我們要在網頁中播放影片時，需要使用ActiveX或Plug-in的方式來達到，例如：Flash Player、QuickTime等等，但在HTML5之後這些東西成了標準，我們不需再透過額外的外掛來達成，相信這也意味著<strong>Web的相關應用將更趨於豐富化</strong>。</p>
<p>現在就連 YouTube 也已經測試使用HTML5的Video來做為影片播放介面，因此在實際應用上雖然我們並不一定要走在時代的尖端，但了解一下新技術是有其必要的。</p>
<p> <span id="more-947"></span>
<p>&#160;<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="html5_video" border="0" alt="html5_video" src="http://blog.colorbase.tw/wp-content/uploads/2010/04/html5_video.png" width="400" height="286" /> </p>
<h2>HTML 5&#160; Video 基礎</h2>
<p>基本的 HTML5 Video 標記如下，我們可以透過 src 屬性來標明影片的URL：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c994902f-36ec-4339-ad1b-0e0c875499c5" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;video src=影片URL &gt;很抱歉！您的瀏覽器不支援HTML5 Video&lt;/video&gt;</pre>
</div>
<p>雖然上面的方式很簡短，但可惜的是因為目前各家瀏覽器在HTML5 Video的影片格式方面支援不一致，而導致我們若我們想要影片能夠兼容各種主流瀏覽器，我們必須提供這兩種主要的HTML5 Video 格式的影片檔案：</p>
<ul>
<li>Theora/Vorbis (*.ogg ; *.ogv) </li>
<li>H.264 / AAC (*.mp4 ; *.m4v) </li>
</ul>
<p>所以我們必須提供兩種格式讓瀏覽器自行依照自己支援的格式下載並播放，因此我們加入 &lt;source&gt; 來定義多個影片來源，而不是用 &lt;video&gt; 的 src 屬性，例如：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:505dffee-a680-4820-aabc-364dee087a86" class="wlWriterEditableSmartContent">
<pre name="code" class="vb:nogutter">&lt;video&gt;
	&lt;source src="video.ogg"&gt;
	&lt;source src="video.m4v"&gt;
	很抱歉！您的瀏覽器不支援HTML5 Video
&lt;/video&gt;</pre>
</div>
<h2>&lt;video&gt; 的屬性</h2>
<p>&lt;video&gt; 除了可以使用 src 屬性來標明影片的URL，我們還可以使用其他的屬性來定義 &lt;video&gt; 的基本樣式或行為。</p>
<h3>src </h3>
<p>影片的URL。</p>
<h3>autoplay</h3>
<p>影片是否自動播放，預設為 false。</p>
<h3>controls</h3>
<p>是否顯示播放控制列，若設定為ture將會顯示播放控制列，這個控制器的樣式是依據瀏覽器而定的，預設為 false。</p>
<h3>width</h3>
<p>&lt;video&gt; 所佔寬度。</p>
<h3>height </h3>
<p>&lt;video&gt; 所佔高度。</p>
<h3>poster </h3>
<p>這如同一些以Flash實現的播放器所提供的「預覽圖」功能一樣，可於此指定預覽圖的URL，當影片尚未開始播放時，將會先顯示這裡所指定的圖片。</p>
<h3>其他的屬性</h3>
<p>&lt;video&gt;的屬性還有 loopend / loopstart / playcount / start / end / loop 但這些屬性的各個瀏覽器的支援不一，因此目前不是很實用。</p>
<h3>簡單的範例</h3>
<p>以下的範例會在頁面載入完成後自動播放，並顯示瀏覽器內建的影片播放控制列，在載入完成並播放之前將會顯示所指定的預覽圖。</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0bd24c20-08c2-413e-ab4e-a60c6a36c0ea" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;video id="myvideo" autoplay controls poster="preview.png" &gt;
	&lt;source src="video.ogg"&gt;
	&lt;source src="video.m4v"&gt;
	很抱歉！您的瀏覽器不知員HTML5 Video
&lt;/video&gt;</pre>
</div>
<h2>&lt;video&gt; 與瀏覽器的支援</h2>
<p>目前HTML5的 &lt;video&gt; 僅於以下瀏覽器版本支援：</p>
<p>Chrome4+ / Firefox 3.5+ / Opera 10.5+ / IE 9+ / Safari 4+ </p>
<p>以及以下Mobile平台：</p>
<p>iPhone / iPod / iPad / Android OS</p>
<p><strong>替代性的解決方案</strong></p>
<p>在過度時期我們可以使用 <a href="http://code.google.com/p/video4all/" target="_blank">video4all</a> 這個開源專案讓更多瀏覽器版本也能支援&lt;video&gt;。</p>
<p>透過 <a href="http://code.google.com/p/video4all/" target="_blank">video4all</a> 我們只需要於HTML中加入它所提供的Javascript Library。</p>
<p class="tip">&lt;script src=&quot;video4all.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</p>
<p>接著我們就可以正常的使用 &lt;video&gt; ，當訪客的瀏覽器不支援 &lt;video&gt; 時 video4all 會自動幫我們將&lt;video&gt;替換成使用Flash的播放器來播放所指定的影片。</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:505ca49b-8f7e-4930-9886-c84c8e257041" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;video&gt;
  &lt;source src="video.ogg" type="video/ogg" /&gt;
  &lt;source src="video.mp4" type="video/mp4" /&gt;
&lt;/video&gt;</pre>
</div>
<h2>HTML5 Video 成員</h2>
<p>在HTML5中我們可以透過 Video所提供的屬性以及方法來控制影片的播放與取得播放資訊。</p>
<h3>play()</h3>
<p>開始播放影片。</p>
<h3>pause()</h3>
<p>影片暫停播放。</p>
<h3>currentTime</h3>
<p><strong>numeric</strong> 目前的播放指標。</p>
<h3>readyState</h3>
<p>影片讀取狀態。</p>
<ul>
<li>HAVE_NOTHING = 0 </li>
<li>HAVE_METADATA = 1 </li>
<li>HAVE_CURRENT_DATA </li>
<li>HAVE_FUTURE_DATA = 2 </li>
<li>HAVE_ENOUGH_DATA = 3 </li>
</ul>
<h3>paused</h3>
<p><strong>boolean</strong> 是否停止</p>
<h3>muted</h3>
<p><strong>boolean</strong> 是否為靜音。</p>
<h3>volume</h3>
<p><strong>numeric</strong> 取得或設定音量值。</p>
<h3>ended</h3>
<p><strong>boolean</strong> 播放指標是否已經到最後。</p>
<h2>搭配jQuery的簡單HTML5 Video 控制範例</h2>
<p><a href="/html5/video/simple.html" target="_blank">請點我觀看範例</a></p>
<p><strong>simple.html</strong></p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:596625d8-15c6-4456-b233-d39f9af63947" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;!doctype html&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;meta charset="UTF-8"&gt;
		&lt;title&gt;HTML5 Video simple test&lt;/title&gt;
		&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"&gt;&lt;/script&gt;
		&lt;script src="init.js"&gt;&lt;/script&gt;
	&lt;/head&gt;

	&lt;body&gt;
		&lt;p&gt;&lt;a href="http://blog.colorbase.tw/web-development/947"&gt;回文章&lt;/a&gt;&lt;/p&gt;
		&lt;video id="myvideo" poster="html5_video.png" &gt;
			&lt;source src="video.ogg"&gt;
			&lt;source src="video.m4v"&gt;
			很抱歉！您的瀏覽器不支援 HTML5 Video
		&lt;/video&gt;
		&lt;div id="state"&gt;&lt;/div&gt;
		&lt;p&gt;&lt;button id="play"&gt;Play&lt;/button&gt;&lt;button id="pause"&gt;Pause&lt;/button&gt;&lt;/p&gt;
		&lt;ul id="statelist"&gt;&lt;/ul&gt;
	&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p><strong>init.js</strong></p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:913445dd-32a6-4c0b-bc8c-02f2f4f45612" class="wlWriterEditableSmartContent">
<pre name="code" class="js:nogutter">$(function(){
	var video = $('#myvideo')[0];//取得video
	var statelist = $('#statelist');
	var videoStateTexts = [
		'HAVE_NOTHING','HAVE_METADATA','HAVE_CURRENT_DATA',
		'HAVE_FUTURE_DATA','HAVE_ENOUGH_DATA'
	];
	var pr = ['currentTime','readyState','paused','muted','volume','ended'];

	$('#play').click(function(){
		video.play(); //播放影片
	});

	$('#pause').click(function(){
		video.pause(); //停止播放
	});

	var t = setInterval(function(){
		statelist.empty();
		$('#state').text(videoStateTexts[video.readyState]);
		for(x in pr){
			statelist.append($('&lt;li&gt;&lt;storng&gt;'+ pr[x]  + ' : ' + video[pr[x]] + '&lt;/strong&gt;&lt;/li&gt;'));
		}
	},100);
});</pre>
</div>
<h2>播放介面的解決方案</h2>
<p>雖然我們可以使用Javascript自行控制HTML5 Video的播放，也意味著我們可以自行開發更漂亮美觀的介面，但這終究會增加許多開發成本，目前已經有許多HTML5 Video Player，不僅提供漂亮的介面，甚至我們還可以根據需求自定播放器外觀。</p>
<h3><a href="http://www.mediafront.org/project/osmplayer" target="_blank">Open Standard Media Player</a></h3>
<p>非常專業且完整度極佳的HTML5 Video 播放器。</p>
<p><a href="http://blog.colorbase.tw/wp-content/uploads/2010/04/image15.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.colorbase.tw/wp-content/uploads/2010/04/image_thumb10.png" width="400" height="267" /></a> </p>
<h3><a href="http://camendesign.com/code/video_for_everybody" target="_blank">Video for Everybody!</a></h3>
<p>簡單清爽的播放介面。</p>
<p><a href="http://blog.colorbase.tw/wp-content/uploads/2010/04/image17.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.colorbase.tw/wp-content/uploads/2010/04/image_thumb12.png" width="400" height="224" /></a> </p>
<h3><a href="http://jilion.com/sublime/video" target="_blank">SublimeVideo</a></h3>
<p>典雅的播放介面。</p>
<p><a href="http://blog.colorbase.tw/wp-content/uploads/2010/04/image18.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.colorbase.tw/wp-content/uploads/2010/04/image_thumb13.png" width="400" height="235" /></a>&#160;</p>
<h3><a href="http://www.html5video.org/kaltura-html5/" target="_blank">Kaltura</a></h3>
<p>能整合jQuery UI訂製介面。</p>
<p><a href="http://blog.colorbase.tw/wp-content/uploads/2010/04/image19.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.colorbase.tw/wp-content/uploads/2010/04/image_thumb14.png" width="400" height="235" /></a> </p>
<h3><a href="http://www.openbeelden.nl/oiplayer/" target="_blank">OIPlayer jQuery plugin</a></h3>
<p>jQuery的Plugin</p>
<p><a href="http://blog.colorbase.tw/wp-content/uploads/2010/04/image20.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.colorbase.tw/wp-content/uploads/2010/04/image_thumb15.png" width="321" height="238" /></a> </p>
</p>
<h2>參考資料</h2>
<ul>
<li><a title="http://grack.com/blog/2009/07/07/video-support-for-older-browsers/" href="http://grack.com/blog/2009/07/07/video-support-for-older-browsers/">http://grack.com/blog/2009/07/07/video-support-for-older-browsers/</a> </li>
<li><a title="http://diveintohtml5.org/video.html" href="http://diveintohtml5.org/video.html">http://diveintohtml5.org/video.html</a> </li>
<li><a title="http://www.w3.org/TR/html5/video.html" href="http://www.w3.org/TR/html5/video.html">http://www.w3.org/TR/html5/video.html</a> </li>
<li><a title="http://www.broken-links.com/2009/10/06/building-html5-video-controls-with-javascript/" href="http://www.broken-links.com/2009/10/06/building-html5-video-controls-with-javascript/">http://www.broken-links.com/2009/10/06/building-html5-video-controls-with-javascript/</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.colorbase.tw/web-development/947/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>開始HTML5 &#8211; Web Workers</title>
		<link>http://blog.colorbase.tw/web-development/888</link>
		<comments>http://blog.colorbase.tw/web-development/888#comments</comments>
		<pubDate>Fri, 23 Apr 2010 17:11:00 +0000</pubDate>
		<dc:creator>阿育</dc:creator>
				<category><![CDATA[Web開發]]></category>
		<category><![CDATA[程式設計]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[trend]]></category>
		<category><![CDATA[web-workers]]></category>

		<guid isPermaLink="false">http://blog.colorbase.tw/?p=888</guid>
		<description><![CDATA[HTML5帶來了許多的改變，除了標記語意上的增強之外，最令人震撼的莫過於它所附屬的Javascript APIs。而 Web Workers 是 HTML5 提供的一個多執行緒(Multi-Thread)的解決方案，讓我們可以把需要大量運算的程式交由Web Workers去做背景執行，如此的好處就是其他的工作仍可以順利進行。
Web Workes 目前支援的瀏覽器有：Firefox 3.5+ / Safari 4.0+ / Chrome 5.0+

 


HTML5 的不同
標記的不同
HTML5在標記上有著相當大的變化，其中最為明顯的即是語意上的標籤，在HTML5中，結構化網頁的語意更加清晰了，除了移除許多不必要的標記之外也增加了許多標記及有用的屬性，本文只簡述範例中會用到的部份。
若想知道自己編寫的HTML5是否有錯誤可以利用HTML5 validator來驗證。
DOCTYPE 變簡潔了
現在DOCTYPE只需簡短的這樣寫：

&#60;!DOCTYPE html&#62;

標籤不一定要閉合
在XHTML裡標籤必須要閉合，例如：

&#60;input type="text" id="name" /&#62;

而在HTML5中，以下的寫法也是正確的，而這也是比較建議的寫法：

&#60;input type="text" id="name"&#62;

同樣的方法也適用於meta，而且在指定content-type時，也只需要指定charset而不必定義文件類型text/html，例如：

&#60;meta charset="UTF-8"&#62;

Web Workers基本概念
在使用Web Workers時，我們必須建立一個Worker實體，並傳入要被呼叫的Javascript檔案所在URL，而我們必須把Worker要跑的程式寫在這個檔案中，例如：

var worker = new Worker("worker.js");

在worker.js中我們必須綁定onmessage來執行我們想要執行的動作，在這裡我們可以使用postMessage()來觸發Worker.onmessage事件，例如：

onmessage = function (evt) {
	for (var i=0; i&#60;100000000; i++) {
		//執行大量迴圈
		postMessage(i); // 觸發 Worker.onmessage() 並傳入 i
	};
};

Worker.onmessage(event) 事件
當在被呼叫的javascript裡呼叫postMessage()時，將會觸發這個事件，在這個事件中我們可以透過event.data來取得傳入資料。

worker.onmessage = function (e){
	// 由於在 worker.js 中使用了 ...]]></description>
			<content:encoded><![CDATA[<p>HTML5帶來了許多的改變，除了標記語意上的增強之外，最令人震撼的莫過於它所附屬的Javascript APIs。而 Web Workers 是 HTML5 提供的一個多執行緒(Multi-Thread)的解決方案，讓我們可以把需要大量運算的程式交由Web Workers去做背景執行，如此的好處就是其他的工作仍可以順利進行。</p>
<p>Web Workes 目前支援的瀏覽器有：Firefox 3.5+ / Safari 4.0+ / Chrome 5.0+</p>
</p>
<p> <span id="more-888"></span>
</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="html5_web_workers" border="0" alt="html5_web_workers" src="http://blog.colorbase.tw/wp-content/uploads/2010/04/html5_web_workers.png" width="400" height="286" /></p>
<h2>HTML5 的不同</h2>
<p><strong>標記的不同</strong></p>
<p>HTML5在標記上有著相當大的變化，其中最為明顯的即是語意上的標籤，在HTML5中，結構化網頁的語意更加清晰了，除了移除許多不必要的標記之外也增加了許多標記及有用的屬性，本文只簡述範例中會用到的部份。</p>
<p>若想知道自己編寫的HTML5是否有錯誤可以利用<a href="http://html5.validator.nu/" target="_blank">HTML5 validator</a>來驗證。</p>
<p><strong>DOCTYPE 變簡潔了</strong></p>
<p>現在DOCTYPE只需簡短的這樣寫：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7714dd36-584e-40a1-a576-2010022e278a" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;!DOCTYPE html&gt;</pre>
</div>
<p><strong>標籤不一定要閉合</strong></p>
<p>在XHTML裡標籤必須要閉合，例如：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:30da56d4-5b66-4776-92e7-c7841d65385e" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;input type="text" id="name" /&gt;</pre>
</div>
<p>而在HTML5中，以下的寫法也是正確的，而這也是比較建議的寫法：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6a745a67-529f-448c-b2a7-2bc82d2f8685" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;input type="text" id="name"&gt;</pre>
</div>
<p>同樣的方法也適用於meta，而且在指定content-type時，也只需要指定charset而不必定義文件類型text/html，例如：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9286ad54-8926-459b-9861-27a5d61f4915" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;meta charset="UTF-8"&gt;</pre>
</div>
<h2>Web Workers基本概念</h2>
<p>在使用Web Workers時，我們必須建立一個Worker實體，並傳入要被呼叫的Javascript檔案所在URL，而我們必須把Worker要跑的程式寫在這個檔案中，例如：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6a92410e-2431-47f6-a787-a8e7379bf5cd" class="wlWriterEditableSmartContent">
<pre name="code" class="js:nogutter">var worker = new Worker("worker.js");</pre>
</div>
<p>在worker.js中我們必須綁定onmessage來執行我們想要執行的動作，在這裡我們可以使用postMessage()來觸發Worker.onmessage事件，例如：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f480ed37-4b24-4c84-b8a8-7897bf2b78ad" class="wlWriterEditableSmartContent">
<pre name="code" class="js:nogutter">onmessage = function (evt) {
	for (var i=0; i&lt;100000000; i++) {
		//執行大量迴圈
		postMessage(i); // 觸發 Worker.onmessage() 並傳入 i
	};
};</pre>
</div>
<p><strong>Worker.onmessage(event) 事件</strong></p>
<p>當在被呼叫的javascript裡呼叫postMessage()時，將會觸發這個事件，在這個事件中我們可以透過event.data來取得傳入資料。</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1ab754fb-e683-472a-9dae-a5245b080ffd" class="wlWriterEditableSmartContent">
<pre name="code" class="js:nogutter">worker.onmessage = function (e){
	// 由於在 worker.js 中使用了 postMessage() 並傳入 i 值
	// 因此在這裡可以使用 event.data 來取得 i 值，並做出相關處理
	// 例如：
	console.log(e.data);
}</pre>
</div>
<p><strong>Worker.onerror(event) 事件</strong></p>
<p>當呼叫失敗時，將會觸發此事件，在這個事件中我們可以透過event來取得事件相關資訊。</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1574452f-d5b9-4cfa-b25b-ad3f54dcdc1a" class="wlWriterEditableSmartContent">
<pre name="code" class="js:nogutter">worker.onerror = function(e){
	alert("於第["+ e.lineno +"]行發生錯誤 : " + e.message); //顯示錯誤訊息
}</pre>
</div>
<p><strong>Worker.terminate()</strong></p>
<p>用以停止Worker的執行的成員函數。</p>
<p>因此Web Worker簡單的操作流程圖如下：</p>
<p><a href="http://blog.colorbase.tw/wp-content/uploads/2010/04/image16.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="html5-web-workers" border="0" alt="html5-web-workers" src="http://blog.colorbase.tw/wp-content/uploads/2010/04/image_thumb11.png" width="400" height="422" /></a></p>
<h2>搭配jQuery的簡單Web Worker範例</h2>
<p><a href="/html5/web_workers_simple/worker.html" target="_blank">點我觀看Web Workers Demo</a></p>
<p>worker.html</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b8988b77-5fda-40a3-be29-4323ba204859" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter">&lt;!doctype html&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;meta charset="UTF-8"&gt;
		&lt;title&gt;Worker Test&lt;/title&gt;
		&lt;link rel="stylesheet" href="worker.css" type="text/css" media="screen"&gt;
		&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"&gt;&lt;/script&gt;
		&lt;script src="init.js"&gt;&lt;/script&gt;
	&lt;/head&gt;

	&lt;body&gt;
		&lt;a href="#" id="startWorker"&gt;開始&lt;/a&gt;
		&lt;ul id="worker-list"&gt;&lt;/ul&gt;
		&lt;a href="#"&gt;回文章&lt;/a&gt;
	&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>worker.css</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:99c7580b-12f5-4617-b64a-3c56c9060045" class="wlWriterEditableSmartContent">
<pre name="code" class="css:nogutter">#worker-list {
	list-style-type: none;
	width: 400px;
}
#worker-list li {
	background-color: #FFE;
	margin: 3px;
	padding: 3px;
	border: 1px solid #C6BC9F;
	font-size: 16px;
	position: relative;
}

#worker-list .close {
	position: absolute;
	background-color: #FFF;
	display: block;
	height: 18px;
	width: 18px;
	border: 1px solid #CCC;
	text-align: center;
	vertical-align: middle;
	font-size: 12px;
	cursor:pointer;
	font-family: Arial, Helvetica, sans-serif;
	right: 3px;
	top: 3px;
}</pre>
</div>
<p>worker.js</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:d61331df-90ac-4c5c-8e93-b5d67f6425b1" class="wlWriterEditableSmartContent">
<pre name="code" class="js:nogutter">onmessage = function (e) {
	for (var i=0; i&lt;e.data; i++) {
		//觸發 worker.onmessage 傳入 i
		if(0 === i % 10 ) postMessage(i);
	};
};</pre>
</div>
<p>init.js</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:525d877f-fbc9-4f2a-a97d-fa21c2c5ed73" class="wlWriterEditableSmartContent">
<pre name="code" class="js:nogutter">$(function(){

	function createWorker (msgObj) {

		// 建立 worker
		var worker = new Worker("worker.js");

		worker.onmessage = function (e){
			msgObj.html(e.data); // 更新資訊 (e.data可取得觸發傳入值)
		}

		worker.onerror = function(e){
			alert("於第["+ e.lineno +"]行發生錯誤 : " + e.message); //顯示錯誤訊息
		}

		return worker;
	}

	$("#startWorker").click(function(){
		for(var i=0;i&lt;5;i++){
			addworker();
		}
		$(this).remove();
		return false;
	});

	function addworker(){
		var newItem = $('&lt;li /&gt;');
		var msg = $('&lt;span class="message"&gt;Waitting...&lt;/span&gt;');

		//關閉鈕
		var close = $('&lt;span class="close"&gt;X&lt;/span&gt;').click(function(){
			var li = $(this).closest('li');
			li.data('worker').terminate(); //停止worker的執行
			li.remove();
		});;

		var worker = createWorker (msg);

		//儲存Worker在元素裡
		newItem.data('worker',worker);

		//執行Worker
		worker.postMessage(30000);

		$('#worker-list').append(newItem.append(msg).append(close))
	}
});</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.colorbase.tw/web-development/888/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

