<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/main.xsl"?>
<b:blog xmlns="http://www.w3.org/1999/xhtml" xmlns:b="http://blog.othree.net"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://blog.othree.net http://blog.othree.net/blooog.xsd">
	<b:blogTitle>O3noBLOG</b:blogTitle>
	<b:blogDescription></b:blogDescription>
	<b:entries>
		<b:entriesMeta>
			<b:listType>s</b:listType>
			<b:listData listID="000576" baseName="domcontentloaded">Use DOMContentLoaded ?</b:listData>

			<b:previous>
				<b:mTitle>大家來用 IE8</b:mTitle>
				<b:mDate>2009/04/01</b:mDate>
				<b:mBase>ie8</b:mBase>
			</b:previous>


			<b:next>
				<b:mTitle>WTFPL</b:mTitle>
				<b:mDate>2009/04/21</b:mDate>
				<b:mBase>wtfpl</b:mBase>
			</b:next>

		</b:entriesMeta>
		<b:entry entryID="000576" baseName="domcontentloaded">
			<b:author>
				<b:authorName>othree</b:authorName>
				<b:authorEmail>othree@gmail.com</b:authorEmail>
				<b:authorUrl></b:authorUrl>
			</b:author>
			<b:datetime>
				<b:date>2009-04-20</b:date>
				<b:time>10:07:52</b:time>
			</b:datetime>
			<b:category>script</b:category>

			<b:CommentsAccepted>1</b:CommentsAccepted>



			<b:PingsAccepted>1</b:PingsAccepted>


			<b:title>Use DOMContentLoaded ?</b:title>
			<b:content>
				<b:summary>onload 越來越少人在用，而改用像是 DOMContentLoaded 這種事件來代替，像是 jQuery 也有個 ready event 可以用，主要是因為 onload 事件還要等待網頁中所有的元素都讀取完畢（或是 timeout），這些元素包括圖片，其他網站的 style, script，flash 物件等，常常訪客開始看網頁內容時，需要執行的 script 卻還沒開始執行，不過並不是所有瀏覽器都有支援 DOMContentLoaded 或是提供其他替代方案，所以各家 js library 為了處理這問題就無所不用其極限。 我是傾向用另外一個方法處理這問題，不過需要一些對網頁內元件的控制能力，其實也很簡單，就是把 script 放在頁面尾端，然後馬上跑，這方法除了可以解決上述問題外，還有另外兩個好處，一是所有瀏覽器都支援，二是可以讓網頁內容先讀進來才跑 script，這也是 YSlow 的建議項目之一，當然如果你就是想那讓那些瀏覽器的使用者看起來感覺不好，就當我沒說吧XD。...</b:summary>
				<b:mainContent><p>onload 越來越少人在用，而改用像是 <a href="https://developer.mozilla.org/en/Gecko-Specific_DOM_Events#DOMContentLoaded">DOMContentLoaded</a> 這種事件來代替，像是 <a href="http://jquery.com/">jQuery</a> 也有個 <a href="http://docs.jquery.com/Events/ready">ready event</a> 可以用，主要是因為 onload 事件還要等待網頁中所有的元素都讀取完畢（或是 timeout），這些元素包括圖片，其他網站的 style, script，flash 物件等，常常訪客開始看網頁內容時，需要執行的 script 卻還沒開始執行，不過並<abbr title="Internet Explorer">不是所有瀏覽器</abbr>都有支援 DOMContentLoaded 或是提供其他替代方案，所以各家 js library 為了處理這問題就無所不用其極限。</p>

<p>我是傾向用另外一個方法處理這問題，不過需要一些對網頁內元件的控制能力，其實也很簡單，就是把 script 放在頁面尾端，然後馬上跑，這方法除了可以解決上述問題外，還有另外兩個好處，一是所有瀏覽器都支援，二是可以讓網頁內容先讀進來才跑 script，這也是 YSlow 的<a href="http://developer.yahoo.com/performance/rules.html#js_bottom">建議項目之一</a>，當然如果你就是想那讓那些瀏覽器的使用者看起來感覺不好，就當我沒說吧XD。</p></b:mainContent>
				<b:extendContent></b:extendContent>
			</b:content>
			<b:comments commentCount="0">

			</b:comments>
			<b:trackbacks trackbackCount="0" trackbackURL="http://othree.net/cgi-bin/mt/mt-tb.cgi/574">

			</b:trackbacks>
		</b:entry>
	</b:entries>
</b:blog>