亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于DOMReady的IE兼容實現,為什么說有了doScroll之后更接近DOMContentLoaded

(function?()?{
????try?{
????????//?DOM樹未創建完之前調用doScroll會拋出錯誤
????????d.documentElement.doScroll('left');
????}?catch?(e)?{
????????//延遲再試一次~
????????setTimeout(arguments.callee,?50);
????????return;
????}
????//?沒有錯誤就表示DOM樹創建完畢,然后立馬執行用戶回調
????init();
})();

//監聽document的加載狀態
d.onreadystatechange?=?function()?{
????//?如果用戶是在domReady之后綁定的函數,就立馬執行
????if?(d.readyState?==?'complete')?{
????????d.onreadystatechange?=?null;
????????init();
????}
}

在沒有doScroll之前勉強用onreadystatechange,有了doScroll之后更接近DOMContentLoaded的實現。
問題:只用onreadystatechange實現有什么問題?
??????只用doScroll不行嗎?


正在回答

4 回答

566f865f0001094905000088.jpghttp://img1.sycdn.imooc.com//566f874a00011f7a09080336.jpg

可能有這方面原因 個人理解 僅供參考

0 回復 有任何疑惑可以回復我~
#1

牛金斯基 提問者

document.readyState == "complete" 用來判斷文檔有無加載完畢, doScroll 用來判斷DOM樹是否構建完畢,DOMReady的目的是在DOM樹構建完成之后,文檔加載完畢前,進行DOM的操作。既然doScroll 可以完成這個目的,為什么還要document.readyState的參與呢,不是多此一舉嗎? 我的理解是:如果doScroll中setTimeout 定時時間長了,而document在DOM樹構建完后又很快加載完成,快到下一次定時到來前,此時為了第一時間執行,所以把onreadystatechange事件加上。但是定時時間可以改小嘛,還是想不通。
2015-12-15 回復 有任何疑惑可以回復我~
#2

昵稱還是已占用 回復 牛金斯基 提問者

在IE中如果是frame框架 是使用 onreadystatechange,不是fame用 doSroll
2015-12-15 回復 有任何疑惑可以回復我~

我覺得init函數只執行一次,兩個判斷那個先完成,就執行哪一個。執行更保險點

0 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//5670103500012bbc07170281.jpg

又看了下視頻 ,視頻中也說了一下

0 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//566f8adf0001690409740533.jpg

添加一段 ?圖片來自javascript高級程序設計

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于DOMReady的IE兼容實現,為什么說有了doScroll之后更接近DOMContentLoaded

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號