摘要:是我寫的嗎還是我偶爾打開控制臺(tái)檢查元素的時(shí)候點(diǎn)擊的元素說實(shí)話,我花了好長時(shí)間才弄明白究竟是什么。什么簡單來說,是在瀏覽器中的表示形式,允許您操縱頁面。那么為什么它經(jīng)常被稱為樹呢這是因?yàn)閺囊粋€(gè)父項(xiàng)開始,該父項(xiàng)擴(kuò)展為子項(xiàng)。
原文自工程師Kara Luton博客,傳送門
DOM,當(dāng)我第一次在訓(xùn)練營學(xué)習(xí)編碼時(shí),就一直聽到這個(gè)詞,但是我從來不知道它到底是什么意思。是我寫的HTML嗎?還是我偶爾打開控制臺(tái)檢查元素的時(shí)候點(diǎn)擊的元素?說實(shí)話,我花了好長時(shí)間才弄明白DOM究竟是什么。
根據(jù)W3C,文檔對(duì)象模型(DOM)是“有效HTML和格式良好的XML文檔的應(yīng)用程序編程接口。它定義了文檔的邏輯結(jié)構(gòu)以及文檔的訪問和操作方式”。
什么?簡單來說,DOM是HTML在瀏覽器中的表示形式,允許您操縱頁面。
那么為什么它經(jīng)常被稱為樹呢?這是因?yàn)镈OM從一個(gè)父項(xiàng)開始,該父項(xiàng)擴(kuò)展為子項(xiàng)。這些子項(xiàng)的項(xiàng)也可以延伸到他們自己的小樹中,就像你在上圖中看到的那樣。
我在一些網(wǎng)站上讀到,你在DevTools中看到的就是DOM的可視化表示,雖然它非常接近,但并不完全正確。DevTools將包含一些額外的信息(比如偽類),這些信息在技術(shù)上不是DOM的一部分。如果你是像我這樣的可視化人員,這是我們?cè)跒g覽器中所能看到的最接近DOM的圖像。
但等一下,這難道不意味著DOM和我們正在編寫的HTML是一樣的嗎?不。
您是否曾經(jīng)不小心遺漏了一個(gè)必需的元素,并讓瀏覽器為您修復(fù)它?您將在DOM中看到這個(gè)元素,盡管您已經(jīng)將它從HTML中刪除了。如果您通過JavaScript操作DOM,那么DOM也將不同于HTML。
使用JavaScript可以編輯頁面的CSS、添加事件監(jiān)聽器、更改節(jié)點(diǎn)屬性等等。這些都在改變DOM原來在HTML中編寫的內(nèi)容。
總結(jié)一下,雖然DOM聽起來非常嚇人,但實(shí)際上是它決定著在瀏覽器頁面上呈現(xiàn)什么,以及JavaScript可以通過DOM來操縱呈現(xiàn)的元素。
非常感謝你閱讀我關(guān)于DOM的文章!一定要在Twitter上關(guān)注我關(guān)于技術(shù)的大量推文,說實(shí)話,我也發(fā)了很多關(guān)于狗的推特。如果您有任何問題,請(qǐng)隨時(shí)在下面發(fā)表評(píng)論或發(fā)推文給我。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/110169.html
摘要:是我寫的嗎還是我偶爾打開控制臺(tái)檢查元素的時(shí)候點(diǎn)擊的元素說實(shí)話,我花了好長時(shí)間才弄明白究竟是什么。什么簡單來說,是在瀏覽器中的表示形式,允許您操縱頁面。那么為什么它經(jīng)常被稱為樹呢這是因?yàn)閺囊粋€(gè)父項(xiàng)開始,該父項(xiàng)擴(kuò)展為子項(xiàng)。 原文自工程師Kara Luton博客,傳送門 DOM,當(dāng)我第一次在訓(xùn)練營學(xué)習(xí)編碼時(shí),就一直聽到這個(gè)詞,但是我從來不知道它到底是什么意思。是我寫的HTML嗎?還是我偶爾...
摘要:模式并不就是一個(gè)具體的解決方案。我們要記住模式的角色僅僅就是給我們提供一個(gè)解決方案體系。使用本地瀏覽器的方法比如來選擇所有為的元素。后者毫無競爭力。在本書的后面我們將繼續(xù)討論更多的設(shè)計(jì)模式。 原書鏈接Learning JavaScript Design Patterns水平有限很多地方不通順,錯(cuò)翻漏翻歡迎交流。 什么是模式? 模式是一種可普遍應(yīng)用于軟件設(shè)計(jì)——對(duì)我們前端人員來講就是Ja...
摘要:比如,我們可以監(jiān)聽事件由實(shí)例發(fā)出,然后在任何瀏覽器中就是變化的時(shí)候都會(huì)得到通知,如下所示每一個(gè)作用域?qū)ο蠖紩?huì)有這個(gè)方法,可以用來注冊(cè)一個(gè)作用域事件的偵聽器。這個(gè)函數(shù)所扮演的偵聽器在被調(diào)用時(shí)會(huì)有一個(gè)對(duì)象作為第一個(gè)參數(shù)。 上一篇:【譯】《精通使用AngularJS開發(fā)Web App》(二) 下一篇:【譯】《精通使用AngularJS開發(fā)Web App》(四) 書名:Mastering W...
摘要:值得注意的是,谷歌瀏覽器和大多數(shù)瀏覽器不同,每一個(gè)選項(xiàng)卡都是渲染引擎的一個(gè)實(shí)例,都擁有獨(dú)立的進(jìn)程。組件之間的通信火狐和谷歌都發(fā)展了一個(gè)特殊的通信結(jié)構(gòu),后面我們將會(huì)單獨(dú)來講。渲染引擎我們所討論的幾款瀏覽器火狐谷歌都是基于兩種渲染引擎建立的。 寫在前面 這篇文章是一篇譯文,年代有點(diǎn)久,部分內(nèi)容有過時(shí),請(qǐng)讀者仔細(xì)閱讀,翻譯自How browser work,原文地址為點(diǎn)擊這里查看原文 簡介 ...
摘要:所以,單向數(shù)據(jù)流的意思是指在變更檢測(cè)期間屬性綁定變更的架構(gòu)。相反,輸出綁定過程并沒有在變更檢測(cè)期間內(nèi)運(yùn)行,所以它沒有把單向數(shù)據(jù)流轉(zhuǎn)變?yōu)殡p向數(shù)據(jù)流。說的單向數(shù)據(jù)流說的是服務(wù)層,而不是視圖層嗷。 原文鏈接: Do you really know what unidirectional data flow means in?Angular 關(guān)于單向數(shù)據(jù)流,還可以參考這篇文章,且文中還有 y...
閱讀 3468·2021-10-11 11:06
閱讀 2256·2019-08-29 11:10
閱讀 2002·2019-08-26 18:18
閱讀 3307·2019-08-26 13:34
閱讀 1614·2019-08-23 16:45
閱讀 1096·2019-08-23 16:29
閱讀 2859·2019-08-23 13:11
閱讀 3313·2019-08-23 12:58