日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

JavaScript 判断 DOM 何时加载完毕

發(fā)布時(shí)間:2025/6/15 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript 判断 DOM 何时加载完毕 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

處理HTML DOM文檔存在一個(gè)難題是,JavaScript可以在DOM完全加載之前執(zhí)行,這會(huì)給你的代碼引發(fā)不少的潛在問(wèn)題。瀏覽器的渲染和操作順序大致如下列表:

  • HTML解析完畢
  • 外部腳本和樣式表加載完畢
  • 腳本在文檔內(nèi)解析并執(zhí)行
  • HTML DOM完全構(gòu)造起來(lái)
  • 圖片和外部?jī)?nèi)容加載
  • 網(wǎng)頁(yè)完成加載

?

在網(wǎng)頁(yè)頭部并且從外部文件加載的腳本會(huì)在HTML真正構(gòu)造之前執(zhí)行。如前所述,這是個(gè)至關(guān)重要的問(wèn)題,因?yàn)檫@兩處執(zhí)行的腳本并不能訪問(wèn)還不存在的DOM。幸好,我們還有若干的補(bǔ)救方法。

?

目前,最常用的級(jí)數(shù)是完全等待整個(gè)頁(yè)面加載完畢才執(zhí)行DOM操作。這種技術(shù)只需利用window對(duì)象的load事件來(lái)綁定一個(gè)函數(shù),頁(yè)面加載完畢即可觸發(fā)。

?

addEvent(window, "load", function(){// do something });


最簡(jiǎn)單的操作卻是最慢的。在加載過(guò)程的順序列表中,你會(huì)注意到頁(yè)面的加載完畢與否完全被最后一步所掌控。這就是說(shuō),如果頁(yè)面有很多的圖片、視頻等,用戶可能得登上一段時(shí)間JavaScript才執(zhí)行。

另一種級(jí)數(shù)可用以監(jiān)聽(tīng) DOM 加載狀態(tài),可能是最復(fù)雜的(從實(shí)現(xiàn)角度來(lái)看),但也是最有效地。

這項(xiàng)技術(shù)在不堵塞瀏覽器加載的情況下盡可能快地檢查 HTML DOM文檔是否已經(jīng)加載了執(zhí)行所必須得屬性。以下是檢查HTML DOM是否可用的幾個(gè)要點(diǎn):

  • document: 你需要知道DOM文檔是否已經(jīng)加載。若能足夠快地檢查,運(yùn)氣好的話你會(huì)看到undefined。
  • document.getElementsByTagName和document.getElementById:頻繁使用document.getElementsByTagName和document.getElementById函數(shù)檢查文檔,當(dāng)存在這些函數(shù)則表明DOM已經(jīng)加載完畢。
  • document.body: 作為額外補(bǔ)充,檢查元素是否已經(jīng)完全加載。理論上前一個(gè)檢查應(yīng)該已經(jīng)能做出判斷,但我發(fā)現(xiàn)有些情況下還是不夠。
  • 使用這些檢查就足夠判斷DOM是否可用了(“足夠”在此表示可能會(huì)有一定毫秒級(jí)的時(shí)間差)。這個(gè)方法幾乎沒(méi)有瑕疵。單獨(dú)使用前述檢查,腳本應(yīng)該可以在現(xiàn)代瀏覽器中運(yùn)行得相對(duì)良好。但是,最近(2008年?)Firefox實(shí)現(xiàn)了緩存改進(jìn),使得window加載事件實(shí)際上可以在腳本能檢查到DOM是否可用之前觸發(fā)。為了能發(fā)揮這個(gè)優(yōu)勢(shì),我同時(shí)為window加載事件附加檢查,以期能獲得更快的執(zhí)行速度。


    最后,domReady函數(shù)集合了所有需要在DOM可用時(shí)就執(zhí)行的函數(shù)的引用。一旦DOM被認(rèn)為是可用的,就調(diào)用這些引用并按順序一一執(zhí)行。

    // 監(jiān)聽(tīng) DOM 是否可用的函數(shù) function domReady(f) {// 假如DOM已經(jīng)加載,馬山執(zhí)行函數(shù)if(domReady.done) return f();// 假如我們已經(jīng)增加了一個(gè)函數(shù)if(domReady.timer) {// 把它假如待執(zhí)行函數(shù)清單中 domReady.ready.push(f);} else {// 為頁(yè)面加載完畢綁定一個(gè)事件,以防它最先完成。addEvent(window, "load", isDOMReady);// 初始化執(zhí)行函數(shù)的數(shù)組domReady.ready = [f];// 盡可能快的檢查DOM是否已可用domReady.timer = setInterval(isDOMReady, 13);} }// 檢查 DOM 是否已可操作 function isDOMReady() {// 如果我們能判斷出DOM已可能,忽略if(domReady.done) return false;// 檢查若干函數(shù)和元素是否可能if(document && document.getElementsByTagName && document.getElementById && document.body) {// 如果可用,我們停止檢查 clearInterval(domReady.timer);domReady.timer = null;// 執(zhí)行所有正在等待的函數(shù)for(var i = 0; i < domReady.ready.length; i++) {domReady.ready[i]();// 記錄我們?cè)诖艘呀?jīng)完成domReady.ready = null;domReady.done = true;}} }

    ?

    現(xiàn)在我們來(lái)看看在HTML文檔中是如何執(zhí)行的。假設(shè)已經(jīng)將domReady函數(shù)寫(xiě)到一個(gè)名為domready.js的外部文件中

    <html><head><title> Testing DOM Loading</title><script src="domready.js"></script><script>domReady(function(){alert("The DOM is loaded!");// do something });</script></head><body><h1>Testing DOM Loading</h1><!-- 這里是大量的HTML --></body> </html>

    總結(jié)

    以上是生活随笔為你收集整理的JavaScript 判断 DOM 何时加载完毕的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 6080黄色| 91九色在线观看 | 亚洲AV无码国产成人久久 | 人人综合 | 天天碰天天干 | 欧美精品免费播放 | 国产在线久 | 97在线精品视频 | 电影桑叶2在线播放完整版 222aaa | 国产精品国产馆在线真实露脸 | 99国产精品欲 | 亚洲欧美乱综合图片区小说区 | 亚洲精品一区二区三区影院忠贞 | 老妇女性较大毛片 | 中文字幕一区二区三区电影 | 波多野结衣在线一区二区 | 日韩一级一区 | 欧美成人三级在线视频 | 日韩成人精品一区 | 成人123区| 性一交一乱一精一晶 | 偷拍第1页 | 日韩一级完整毛片 | 欧洲精品视频在线 | 日本一区二区三区网站 | 亚洲国产成人精品久久久 | 久久精品国产99国产精品 | 在线观看国产精品入口男同 | 99久久99久久精品国产片果冻 | 日韩精品久久一区二区 | 黄色一级免费视频 | 韩国理论午夜 | 成人精品视频一区二区三区尤物 | 免费网站污| 亚洲一区二区视频 | 青青草青娱乐 | 日韩免费二区 | 天天曰天天爽 | 第五色婷婷 | 女人裸体免费网站 | 朴麦妮原版视频高清资源 | 亚洲A∨无码国产精品 | 毛片毛片毛片毛片毛片毛片毛片毛片 | 999久久久久 | 少妇毛片一区二区三区粉嫩av | 青草青在线视频 | 制服丝袜一区 | 九色蝌蚪91| 中文字幕久久久久 | 美女操操操 | 制服丝袜中文字幕在线 | 国产精品美女www爽爽爽视频 | 国产精品无码电影在线观看 | 97中文字幕在线观看 | 东方影库av | 成人va在线观看 | 欧美日韩久久精品 | 国产精品久久久午夜夜伦鲁鲁 | 人人色网| 麻豆短视频在线观看 | 欧美3p在线观看 | 国产视频一二三四区 | 精品一区久久久 | 日本中文字幕二区 | 亚洲黄在线观看 | 欧美日韩亚洲国产另类 | 97xxx| 国产 日韩 欧美在线 | jizzjizz日本免费视频 | 国产一级在线免费观看 | 国产精品一区二区三区高潮 | 青春草视频在线免费观看 | 国产精品无码一区二区无人区多人 | 秋霞毛片| 成人免费看片在线观看 | 素人一区 | 精品国产一区二区三区久久久久久 | 亚洲videos| 射影院| va在线播放 | 国产精品综合 | 四虎精品欧美一区二区免费 | 在线观看成人一区 | 色鬼综合 | 日韩怡红院 | 成人做爰www看视频软件 | 免看一级a毛片一片成人不卡 | 国产a不卡 | 深夜国产在线 | 免费在线播放黄色片 | 欧美日韩一二区 | 男人网站在线观看 | china国模大尺度pics | 久久精品在线免费观看 | jjzz在线| 1024毛片基地 | 一区二区在线免费 | 成人精品一区日本无码网 | 亚洲男女 |