<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>JavaScript 小陷阱 (5) - window.onload()</title>
<link>http://blog.roodo.com/jaceju/archives/2808099.html/</link>
<description><![CDATA[我常會在頁面載入完成時，利用 window.load 來執行一些動作。基本的方式如下：

window.onload = function ()
{
  // Do something...
}
特別注意一點：如果直接把新動作附在 window.onload 的話，是會把前一個 window.onload 的動作給蓋掉的。
不過如果現在有兩個動作都需要用到 window.onload ，而且其中一個我不想改動時該怎麼辦呢？ (例如是第三方函式庫裡的程式) 
]]>
	</description>
<language>zh-tw</language>
<generator>Roodo Blog System</generator>
<copyright>All Rights Reserved</copyright>
<atom:link href="http://blog.roodo.com/jaceju/archives/2808099-comment.xml" rel="self" type="application/rss+xml" />
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[謝謝你提供的好方法、解惑 ^^感恩]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-15808541</guid>
		<category>文章回應</category>
	<pubDate>Tue, 19 Feb 2008 17:52:18 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[To 俠雨：

第一個 ///Action2 == null 是錯的， Action2 這時會是個空函式，而不是 null 。]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-15808423</guid>
		<category>文章回應</category>
	<pubDate>Tue, 19 Feb 2008 17:29:13 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[你好~請問以下用"///"所註解的程序內容是否正確，謝謝：

--- HTML頁面載入中：---
var Action2 = window.onload || function () {}; ///Action2 == null
window.onload = function () // Function B
{
  Action2();
  alert('Action 2');
}

var Action1 = window.onload || function () {}; ///Action1 == Functin B 
window.onload = function() // Function A
{
  Action1();
  alert('Action 1');
}

var Action3 = window.onload || function () {}; ///Action3 == Functin A
window.onload = function () // Function C 
{
  alert('Action 3');
  Action3();
}

--- 頁面載入完成，開始執行window.onload事件：---
因在頁面載入的最後，window.onload = Functin C
所以Function執行順序為：
C → 顯示'Action 3'，由Action3() 呼叫 Functin A → 
A → 由 Action1() 呼叫 Functin B → 
B → Action2()是空值，顯示'Action 2' → B執行完回到A
A → 顯示'Action 1'

(顯示結果依序為：Action 3 → Action 2 → Action 1)]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-15808347</guid>
		<category>文章回應</category>
	<pubDate>Tue, 19 Feb 2008 17:12:26 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[這麼清楚的解說
感激涕澪]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-15023759</guid>
		<category>文章回應</category>
	<pubDate>Thu, 15 Nov 2007 14:36:03 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[To Simon:

1. onload 事件會在整個 HTML 頁面 (包含圖片等) 載完後才執行。

2. body 的 onload 會蓋掉你上面的 window.onload 的指定，也就是類似以下的程式碼：

function doThisOnLoad() {
  //something...
}

var oldOnload = window.onload || function () {};
window.onload = function ()
{
  oldOnload();
  // Do Something...
}

// 在 body onload 等同於這樣：
window.onload = doThisOnLoad; // 也就是上面的 window.onload 被這行蓋台了。

3. 所以建議你不要把 window.onload 和 body 的 onload 事件混用。]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-15002825</guid>
		<category>文章回應</category>
	<pubDate>Thu, 15 Nov 2007 12:00:23 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[邏輯上想不通...
譬如：
&lt;html&gt;
&lt;head&gt;
&lt;script&gt;
function&nbsp;doThisOnLoad()&nbsp;{
&nbsp;&nbsp;//something...
}

var&nbsp;oldOnload&nbsp;=&nbsp;window.onload&nbsp;||&nbsp;function&nbsp;()&nbsp;{};
window.onload&nbsp;=&nbsp;function&nbsp;()
{
&nbsp;&nbsp;oldOnload();
&nbsp;&nbsp;//&nbsp;Do&nbsp;Something...
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&nbsp;onload=&quot;doThisOnLoad();&quot;&gt;&lt;/body&gt;
&lt;/html&gt;
上面的&lt;script&gt;區塊究竟是在&lt;body&gt;前還是後執行的呢？
如果是在前
那oldOnload取到的值應該是function(){}而不是doThisOnLoad()
因為當時還沒執行到&lt;body&gt;不是嗎？
還是說browser在處理完body後才會執行&lt;header&gt;裡的&lt;script&gt;區塊裡沒有包成function的敘述？]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-15002561</guid>
		<category>文章回應</category>
	<pubDate>Thu, 15 Nov 2007 11:29:05 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[To Simon:

1. script 可以放在 head 或 body 標籤內，但不可以放在這兩個標籤外；因為這樣是不合 HTML 規範的，會使得有些瀏覽器會沒辦法讀取。所以 script 不能放在 &lt;/body&gt; 後面。

2. 如果沒用 function 的 script 放在 &lt;/body&gt; 前面，其實和 onload 的方式差不多；只不過這時因為 body 還沒被載入 DOM ，所以可能會有一些奇怪的 Bug 發生。

所以還是建議你用 onload 的方式會比較好，或是利用其他 JavaScript Library 的 ready 方法來處理，會讓你的程式比較穩定一些。]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-14996735</guid>
		<category>文章回應</category>
	<pubDate>Wed, 14 Nov 2007 18:44:28 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[(html碼跑掉了)
我是指放在&lt;/body&gt;前或後的&lt;script&gt;區塊裡]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-14996665</guid>
		<category>文章回應</category>
	<pubDate>Wed, 14 Nov 2007 18:28:21 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[請問把要自動執行的javascript敘述直接寫在&lt;/body&gt;前或後的區塊裡（不寫成function）
跟
寫成function用&lt;body onload="xxx()"&gt;呼叫
這兩種方式有什麼差異？
（假設沒有像您動態增加自動執行動作的需求）]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-14996657</guid>
		<category>文章回應</category>
	<pubDate>Wed, 14 Nov 2007 18:24:57 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[舊的 window.onload 就沒辦法執行了，如此而已。]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-14218635</guid>
		<category>文章回應</category>
	<pubDate>Tue, 14 Aug 2007 12:50:03 +0800</pubDate>
</item>
<item>
	<title>回應：JavaScript 小陷阱 (5) - window.onload()</title>
	<description><![CDATA[請問一下,蓋掉先前的連結,會造成什麼樣的影響?]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/2808099.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/2808099.html#comment-14218443</guid>
	<author>f.c.zenwork@gmail.com(陳富霖)</author>	<category>文章回應</category>
	<pubDate>Tue, 14 Aug 2007 12:20:46 +0800</pubDate>
</item>
</channel>
</rss>