※ 認識DOM(二)

更新於 發佈於 閱讀時間約 2 分鐘

※ Javascript和HTML的關係

當我們輸入新的網址或按下重新整理時,從解析檔案到畫面顯示出來,瀏覽器會進行以下流程:

  • 解析 HTML / CSS 檔案,建立物件模型:
  1. HTML → DOM (Document Object Model)。
  2. CSS → CSSOM (CSS Object Model)。
  • 將 DOM 和 CSSOM 合併為 Render Tree,準備開始運算。
  • 計算每個元素的畫面位置,產生 Layout。
  • 繪製畫面細節 (Paint)。

結論:JavaScript 為 HTML 提供動態功能和互動效果。透過操作 DOM,JavaScript 可以來讀取、添加、修改或刪除 HTML 元素和屬性。JavaScript 使得 HTML 頁面不僅僅是靜態的訊息展示,而是變成了一個動態、可回應用戶操作的動態頁面。

※ Javascript和DOM API的關係

raw-image

DOM 和 CSSOM 就是瀏覽器開放給 JavaScript 的 API,目的是為了要讓 JavaScript 去操作網頁元素。

重點整理:

  • HTML 被瀏覽器解析之後,變成一叫做 DOM 的結構。
  • JavaScript 可以修改 DOM 結構中任意節點。
  • 我們實際在視窗裡看到的結果,是 JavaScript 操作以後的結果。

※ 順序很重要:先載入 HTML,再載入 JavaScript

raw-image

說明:

  • JavaScript 檔案執行中可能會阻塞網頁的渲染。將 <script> 放在底部,可以讓網頁的主要內容先渲染出來,加快渲染速度。
  • 為了避免操作未就緒的 DOM 元素造成錯誤,因此放在底部可以保證腳本運行時 DOM 已完全建立。
  • 最後再去讀取 JavaScript 來修改 DOM。



avatar-img
奧莉薇走在成為後端工程師之路上
17會員
137內容數
全端網頁開發專業知識分享
留言
avatar-img
留言分享你的想法!
※ DOM是什麼? DOM 全名為 Document Object Model 中文翻譯為 文件物件模型,就是把一份 HTML 文件內的各個標籤,包括文字、圖片等等都定義成物件,而這些物件最終會形成一個樹狀結構。 就 Document Object Model 這個名字來說,其中 documen
※ 非同步概念總複習 為什麼要使用 Promise? 在 JavaScript 開發中,處理非同步操作是常見需求,涉及如文件讀寫、數據庫查詢或網路請求等耗時任務。傳統的回調方式可能導致代碼結構混亂,稱為「回調地獄」,難以維護和理解。 Promise 是解決這問題的方法。它是一個物件(objec
認識 async/await基本概念: async 的本質是 promise 的語法糖 ,只要 function 標記為 async,就表示裡頭可以撰寫 await 的同步語法,而 await 顧名思義就是「等待」,它會確保一個 promise 物件都解決 ( resolve ) 或出錯 ( re
什麼是 Promise.all? 在有多個 Promise 的時候,使用 Promise.all 可以確保「所有的 Promise 都執行完以後,才進入 then」。 Promise.all 語法結構: Promise.all 接受的參數是陣列形式。 什麼時候要使用 Promise.all?
※ Promise基本介紹 什麼是 Promise? Promise 是 JavaScript 的一個構造函式,用於創建表示非同步操作的物件實例。使用 new Promise() 時,你會創建一個包含非同步操作的實例,這個實例可以透過其繼承的方法如 then(), catch(), 和 fina
※ 同步概念: 單純地「由上而下」執行程式碼,而且一次只執行一件事,也就是「按順序執行,一個動作結束才能切換到下一個」。缺點是你需要「等待」事情執行完畢,才能繼續往下走。 ※ 非同步概念: 盡可能讓主要的執行程序不需要停下來等待,若遇到要等待的事情,就發起一個「非同步處理」,讓主程序繼續執行,
※ DOM是什麼? DOM 全名為 Document Object Model 中文翻譯為 文件物件模型,就是把一份 HTML 文件內的各個標籤,包括文字、圖片等等都定義成物件,而這些物件最終會形成一個樹狀結構。 就 Document Object Model 這個名字來說,其中 documen
※ 非同步概念總複習 為什麼要使用 Promise? 在 JavaScript 開發中,處理非同步操作是常見需求,涉及如文件讀寫、數據庫查詢或網路請求等耗時任務。傳統的回調方式可能導致代碼結構混亂,稱為「回調地獄」,難以維護和理解。 Promise 是解決這問題的方法。它是一個物件(objec
認識 async/await基本概念: async 的本質是 promise 的語法糖 ,只要 function 標記為 async,就表示裡頭可以撰寫 await 的同步語法,而 await 顧名思義就是「等待」,它會確保一個 promise 物件都解決 ( resolve ) 或出錯 ( re
什麼是 Promise.all? 在有多個 Promise 的時候,使用 Promise.all 可以確保「所有的 Promise 都執行完以後,才進入 then」。 Promise.all 語法結構: Promise.all 接受的參數是陣列形式。 什麼時候要使用 Promise.all?
※ Promise基本介紹 什麼是 Promise? Promise 是 JavaScript 的一個構造函式,用於創建表示非同步操作的物件實例。使用 new Promise() 時,你會創建一個包含非同步操作的實例,這個實例可以透過其繼承的方法如 then(), catch(), 和 fina
※ 同步概念: 單純地「由上而下」執行程式碼,而且一次只執行一件事,也就是「按順序執行,一個動作結束才能切換到下一個」。缺點是你需要「等待」事情執行完畢,才能繼續往下走。 ※ 非同步概念: 盡可能讓主要的執行程序不需要停下來等待,若遇到要等待的事情,就發起一個「非同步處理」,讓主程序繼續執行,