大部分web應用都需要web瀏覽器通知他們文件載入完畢和為操作準備就緒的時間。window物件的load事件就是為了這個目的。load事件直到文件和所有載入完畢時才發生。然而,在文件完全解析之後但在所有全部載入完畢之前開始執行指令碼通常是安全的,所以如果基於「load」發生之前的事件觸發指令碼會提公升web應用的啟動時間。
當文件載入解析完畢且所有延遲(deferred)指令碼都執行完畢時會觸發domcontentloaded事件,此時和非同步(async)指令碼可以依舊在載入,但是文件已經為操作準備就緒了。firefox引入了這個事件,然後塔被包括microsoft的ie9在內的所有其他瀏覽器採用。儘管其名字中有「dom」,並屬於3級dom事件標準的一部分,但html5標準化了它。
document.readystate屬性隨著文件載入過程而變化。在ie中,每次狀態改變都伴隨著document物件上的readystatechange事件,當ie接受到「complete」狀態時使用這個事件來做判斷是可行的。html5標準化了readystatechange事件,但它僅在load事件之前立即出發,所以目前尚不清楚監聽「readystatechange」取代「load」會帶來多大的好處。
下面定義了whenready()函式。當文件為操作準備就緒時,傳遞給whenready()的函式將會作為document物件的方法呼叫。和之前的onload()函式不同,whenready()監聽domcontentloaded和readystatechange事件,而使用load事件僅僅是為了相容那些不支援之前事件的較老的瀏覽器。
/*
* 傳遞函式給whenready(),當文件解析完畢時且為操作準備就緒時,
* 函式將作為文件物件的方法呼叫
* domcontentloaded、readystatechange或load事件發生時會觸發註冊函式
* 一旦文件準備就緒,所有函式都將被呼叫,任何傳遞給whenready()的函式都將立即呼叫
*/var whenready = (function();
// 現在設定ready標識為true,並移除所有函式
ready = true;
funcs = null;
} // 為接受到的任何事件註冊處理程式
if (document.addeventlistener)
else if (document.attachevent) ;
// 返回whenready函式
return function whenready(f)
}());
JavaScript權威指南 第三章
var scope global 宣告乙個全域性變數 function checkscope checkscope local scope global 宣告乙個全域性變數,可以不使用var來宣告 function checkscope2 checkscope2 local local var sc...
Hadoop 權威指南
rpm包和deb包是兩種linux系統下最常見的安裝包格式,在安裝一些軟體或服務的時候免不了要和它們打交道。rpm包主要應用在redhat系列包括 fedora等發行版的linux系統上,deb包主要應用於debian系列包括現在比較流行的ubuntu等發行版上。yum可以用於運作rpm包,例如在f...
HTTP權威指南
web 伺服器會為所有 http 物件資料附加乙個 mime 型別,content type image jpeg,content length 12984 伺服器資源名被稱為統一資源識別符號 uniform resource identifier,uri uri 就像網際網路上的郵政位址一樣,在世...