19.項(xiàng)目 1-博客前端:封裝庫(kù)--DOM 加載[下]

學(xué)習(xí)要點(diǎn):

1.問(wèn)題所在
2.設(shè)置代碼

上一節(jié)課使用 DOMCotenntLoaded 事件和 doScroll 方法完成了主流瀏覽器 DOM 加載,
這節(jié)課,我們重點(diǎn)研究一下怎樣向非主流瀏覽器的向下兼容。

一.問(wèn)題所在

主流瀏覽器包括:IE6789、firefox、Opera9+、Safari3.1+和 Chrome。但是還存在一些非
主流瀏覽器,那么我們可以使用 window.onload 或者其他方式。

二.設(shè)置代碼

雖然以上對(duì)于主流瀏覽器和主流瀏覽器的版本已經(jīng)非常夠用了,但還有幾個(gè)小細(xì)節(jié)我們
需要了解一下。Opera8 之前不支持,webkit 引擎瀏覽器 525 之前不支持,F(xiàn)irefox2 有嚴(yán)重
bug。
對(duì)于非 IE,又不支持 DOMContentLoaded,可以直接用傳統(tǒng)的 window.onload 來(lái)執(zhí)行,
因?yàn)槟壳皝?lái)說(shuō)這種瀏覽器基本滅絕了,也可以 document.readyState 輪詢,直到完畢。

setInterval(function(){
if(/loaded|complete/.test(document.readyState)){
doReady(fn);
}
}, 1);
//最終形態(tài)
function addDomLoaded(fn) {
var isReady = false;
var timer = null;
function doReady(){
if(isReady) return;
isReady = true;
if (timer) clearInterval(timer);
fn();
}
if ((sys.webkit && sys.webkit < 525) || (sys.opera && sys.opera < 9) ||
(sys.firefox && sys.firefox < 3))
{
timer = setInterval(function(){
if(/loaded|complete/.test(document.readyState)){
doReady();
}
}, 1);
/*timer = setInterval(function(){
if (document && document.getElementById &&
document.getElementsByTagName && document.body document.documentElement )
{
doReady();
}
}, 1); */
} else if (document.addEventListener) {//W3C
addEvent(document, 'DOMContentLoaded', function () {
doReady();
removeEvent(document, 'DOMContentLoaded', arguments.callee);
});
}
else if (sys.ie && sys.ie < 9) {//IE
//IE8-
timer = setInterval(function () {
try {
document.documentElement.doScroll('left');
doReady();
} catch (ex) {};
});
}
}

感謝收看本次教程!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容