|
Firefox有DOMContentLoaded事件可以輕松解決,可惜的就是IE沒有。
MSDN關(guān)于JSCRIPT的一個(gè)方法有段不起眼的話,當(dāng)頁面DOM未加載完成時(shí),調(diào)用doScroll方法時(shí),會產(chǎn)生異常。那么我們反過來用,如果不異常,那么就是頁面DOM加載完畢了!
復(fù)制代碼 代碼如下:
function IEContentLoaded (w, fn) {
var d = w.document, done = false,
// only fire once
init = function () {
if (!done) {
done = true;
fn();
}
};
// polling for no errors
(function () {
try {
// throws errors until after ondocumentready
d.documentElement.doScroll('left');
} catch (e) {
setTimeout(arguments.callee, 50);
return;
}
// no errors, fire
init();
})();
// trying to always fire before onload
d.onreadystatechange = function() {
if (d.readyState == 'complete') {
d.onreadystatechange = null;
init();
}
};
}
這個(gè)函數(shù)是Diego Perini在07年就發(fā)布了這個(gè)方法,
而且獲得了廣泛認(rèn)同,以至于現(xiàn)在許多開源框架都是借鑒這種方法,譬如JQuery中的ready。
如果以后需要用到IE的DomReady,就是他了。
用法:
IEContentLoaded( document.getElementById("test") , test );
function test(){ }
JavaScript技術(shù):javascript IE中的DOM ready應(yīng)用技巧,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。