javascript IE中的DOM ready應(yīng)用技巧
更新時(shí)間:2008年07月23日 20:31:34 作者:
當(dāng)我們想在頁面加載之后執(zhí)行某個(gè)函數(shù),肯定會想到onload了
但onload在瀏覽器看來,就是頁面上的東西全部都加載完畢后才能發(fā)生,但那就為時(shí)已晚了。
如果只需要對DOM進(jìn)行操作,那么這時(shí)就沒必要等到頁面全部加載了。我們需要更快的方法。
Firefox有DOMContentLoaded事件可以輕松解決,可惜的就是IE沒有。
MSDN關(guān)于JSCRIPT的一個(gè)方法有段不起眼的話,當(dāng)頁面DOM未加載完成時(shí),調(diào)用doScroll方法時(shí),會產(chǎn)生異常。那么我們反過來用,如果不異常,那么就是頁面DOM加載完畢了!
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(){ }
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(){ }
相關(guān)文章
JS實(shí)現(xiàn)點(diǎn)擊鏈接切換顯示隱藏內(nèi)容的方法
這篇文章主要介紹了JS實(shí)現(xiàn)點(diǎn)擊鏈接切換顯示隱藏內(nèi)容的方法,涉及javascript鼠標(biāo)事件響應(yīng)及頁面元素屬性動態(tài)變換相關(guān)操作技巧,需要的朋友可以參考下2017-10-10基于JavaScript偽隨機(jī)正態(tài)分布代碼實(shí)例
這篇文章主要介紹了基于JavaScript偽隨機(jī)正態(tài)分布代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11原生js實(shí)現(xiàn)網(wǎng)頁頂部自動下拉/收縮廣告效果
本文主要介紹了原生js實(shí)現(xiàn)網(wǎng)頁頂部自動下拉/收縮廣告效果的實(shí)例代碼。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01不錯(cuò)的用resizeTo和moveTo兩個(gè)函數(shù)實(shí)現(xiàn)窗口的“打乒乓球”效果
不錯(cuò)的用resizeTo和moveTo兩個(gè)函數(shù)實(shí)現(xiàn)窗口的“打乒乓球”效果...2007-08-08javascript實(shí)現(xiàn)自定義滾動條效果
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)自定義滾動條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08自定義函數(shù)實(shí)現(xiàn)IE7與IE8不兼容js中trim函數(shù)的問題
這篇文章主要介紹了自定義函數(shù)實(shí)現(xiàn)IE7與IE8不兼容js中trim函數(shù)的方法,涉及trim函數(shù)的重寫與正則匹配的技巧,需要的朋友可以參考下2015-02-02JavaScript 操作鍵盤的Enter事件(鍵盤任何事件),兼容多瀏覽器
JavaScript 操作鍵盤的Enter事件(鍵盤任何事件),支持各種瀏覽器,需要的朋友可以參考下。2010-10-10