深入解析domcontentloaded事件

一、domcontentloaded是什麼?

1、domcontentloaded是一個事件,當HTML文檔在瀏覽器中被完全載入和解析完成之後,觸發該事件。

2、該事件與頁面中的CSS和JS資源無關,僅限於DOM樹的構建完成。因此,該事件會比load事件觸發得更早一些。

二、domcontentloaded早於onload的原因是什麼?

1、由於domcontentloaded事件僅與HTML文檔的解析有關,並不涉及頁面中CSS和JS資源的載入和解析,所以會比load事件先觸發一些。

2、如果將JS資源放在頁面底部,或者使用defer或async屬性,可以讓JS的載入和解析在domcontentloaded事件之後再進行,從而避免對頁面載入速度的影響。

三、domcontentloaded和load事件的區別

1、domcontentloaded事件表示HTML文檔的DOM樹已經構建完成,但是一些圖片、JS文件等外部資源可能還沒有載入完成。

2、load事件表示頁面中的所有資源已經載入完成,包括圖片、style和script等外部資源。

3、因此,domcontentloaded事件觸發的時機比load事件早,可以讓頁面更快地顯示內容。

四、domcontentloaded和load事件誰先執行?

1、由於domcontentloaded事件僅與HTML文檔的解析有關,不需要等待CSS和JS資源的載入和解析,因此會先於load事件觸發。

2、但是,如果頁面中的JS資源被放在body的底部,或者使用了defer或async屬性,它們的載入和解析會在domcontentloaded事件之後再進行,從而讓load事件晚於domcontentloaded事件觸發。

五、domcontentloaded與onload事件的區別

1、domcontentloaded事件表示頁面的DOM樹已經構建完成,但是一些圖片、JS文件等可能還在載入中。

2、onload事件表示頁面中的所有資源都已經載入完成,包括圖片、style和script等外部資源。

3、與load事件類似,onload事件在頁面所有資源載入完成後才會觸發。

4、但是,與load事件不同的是,onload事件會等待所有嵌入式iframe中的資源載入完成之後再觸發。

六、完整代碼示例:




  
  domcontentloaded示例


  

domcontentloaded示例

頁面載入中...

document.addEventListener('DOMContentLoaded', function () { console.log('DOM樹構建完成'); }); window.addEventListener('load', function () { console.log('所有資源載入完成'); }); window.addEventListener('onload', function() { console.log('所有iframe嵌入頁面載入完成'); });

在該示例中,我們使用了addEventListener方法,給domcontentloaded、load和onload事件分別綁定了一個處理函數。在控制台中,我們可以看到它們的觸發時機。

當頁面的DOM樹構建完成時,我們看到了「DOM樹構建完成」這個日誌。當所有資源載入完成時,我們看到了「所有資源載入完成」這個日誌。而當所有iframe嵌入頁面的資源都載入完成時,我們看到了「所有iframe嵌入頁面載入完成」這個日誌。

通過這個示例,我們可以更直觀地理解DOMContentloaded事件的觸發時機及其與其他事件的異同。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/300332.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-29 12:51
下一篇 2024-12-29 12:51

相關推薦

  • 抖音外放親媽下葬事件的背後真相

    近期,一段抖音外放親媽下葬的視頻引發廣泛關注和熱議。不少人對這個事件感到震驚和憤怒,認為這種行為非常不尊重親人,觸犯了社會公德和家庭道德。但是,事情真相到底是什麼呢?我們有必要從多…

    編程 2025-04-28
  • cc.director.on事件監聽器

    本文將從多個方面詳細介紹Cocos Creator中的cc.director.on事件監聽器。 一、cc.director.on的作用和用法 cc.director.on是Coco…

    編程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • 深入理解byte轉int

    一、位元組與比特 在討論byte轉int之前,我們需要了解位元組和比特的概念。位元組是計算機存儲單位的一種,通常表示8個比特(bit),即1位元組=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什麼是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一個內置小部件,它可以監測數據流(Stream)中數據的變…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25
  • 深入了解scala-maven-plugin

    一、簡介 Scala-maven-plugin 是一個創造和管理 Scala 項目的maven插件,它可以自動生成基本項目結構、依賴配置、Scala文件等。使用它可以使我們專註於代…

    編程 2025-04-25
  • JavaScript點擊事件全方位指南

    一、click事件基礎 click事件是最常用的滑鼠事件之一,當元素被單擊時觸發。click事件適用於大多數HTML元素(<a>、<button>)和SVG…

    編程 2025-04-25
  • 深入了解LaTeX的腳註(latexfootnote)

    一、基本介紹 LaTeX作為一種排版軟體,具有各種各樣的功能,其中腳註(footnote)是一個十分重要的功能之一。在LaTeX中,腳註是用命令latexfootnote來實現的。…

    編程 2025-04-25
  • 詳解JavaScript onclick事件

    一、onclick的基礎知識 onclick事件是JavaScript中最常用的事件之一,它在用戶點擊某個HTML元素時觸發。通常我們可以通過給元素添加一個onclick屬性來綁定…

    編程 2025-04-25

發表回復

登錄後才能評論