JavaScript中DOM和BOM原理詳析
前言
本系列用于撰寫作者在學(xué)習(xí)JavaScript
及瀏覽JavaScript
相關(guān)書籍時(shí)所遇到的一些問題及心得
DOM
首先我們要了解JavaScript
里面一個(gè)非常重要的模型:文檔對(duì)象模型(DOM
,全稱Document Object Model
),這是一個(gè)應(yīng)用編程的API
接口,我們一般在HTML頁面中使用擴(kuò)展的XML
,提到DOM
,我們就得想到節(jié)點(diǎn),換句話說,HTML
或者XML
頁面是由不同的節(jié)點(diǎn)組成的頁面
<!DOCTYPE html> <html lang="en"> <head> ? ?<meta charset="UTF-8"> ? ?<title>Title</title> </head> <body> <p>Hello World</p> </body> </html>
上圖是一個(gè)很明顯的HelloWorld
的界面,也是大多數(shù)程序員“夢(mèng)”開始的地方,我們現(xiàn)在的重點(diǎn)不在如何寫代碼,本文重在講解html
的結(jié)構(gòu)分析
通過上圖我們可以看到,使用DOM
節(jié)點(diǎn)對(duì)HTML
的結(jié)構(gòu)進(jìn)行分解
HTML
分為兩部分,head
和body
,head
“分配”下去title
(標(biāo)題)和Sample Page
;body
分配下去則是段落標(biāo)簽p
及網(wǎng)頁內(nèi)容,看到這里,一些讀者會(huì)產(chǎn)生如下疑問
為什么要?jiǎng)?chuàng)建DOM節(jié)點(diǎn)或者畫一個(gè)類似于這樣的結(jié)構(gòu)圖?
通過這個(gè)結(jié)構(gòu)圖,我們能夠很清晰的看到文檔的結(jié)構(gòu),有助于我們快速開發(fā)前端HTML
頁面,盡量減少后期代碼冗余帶來的不必要的麻煩,因此,我們使用DOM API
可以輕松的刪除、添加、替換、修改節(jié)點(diǎn)從而更改文檔的結(jié)構(gòu)
接下來我們重點(diǎn)講講DOM
這個(gè)大家伙
DOM的家世
1.DOM為啥這么有必要?
首先我們得明白一個(gè)問題,世界上有諸多瀏覽器,如360、IE、Edge、Chrome
等等,這些瀏覽器都不是同一家公司研發(fā)出來的,那么就意味著遵守的網(wǎng)頁規(guī)則也不一樣,瀏覽器軟件是無窮無盡的,但是咱們的技術(shù)得跟上呀,因此我們需要一個(gè)穩(wěn)定的結(jié)構(gòu)去能夠兼容各大瀏覽器運(yùn)行HTML
,DOM
應(yīng)運(yùn)而生。此處插個(gè)題外話,DOM
標(biāo)準(zhǔn)是W3C
制定的哦,也就是咱們熟悉的萬維網(wǎng)聯(lián)盟
2.DOM的迭代,有啥區(qū)別?
在1998年的10月,DOM Level 1
成為了W3C
的推薦標(biāo)準(zhǔn),這個(gè)DOM Level 1
是由DOM Core
和DOM HTML
組成的。前者提供了上文說到的XML
文檔(映射關(guān)系),后者在前者的基礎(chǔ)上進(jìn)行擴(kuò)增,增加了特定于HTML
的對(duì)象和方法
3.注意注意??!
DOM
并不是JavaScript
的獨(dú)生子,其他的一些語言也可以實(shí)現(xiàn)DOM
操作,對(duì)于瀏覽器來說,DOM
就是使用ECMAScript
實(shí)現(xiàn)的,現(xiàn)在已經(jīng)成為了JavaScript
的一大組成部分(有種先入為主的感覺)
關(guān)于DOM Level 2
嘛,估計(jì)大部分讀者不算太重視,畢竟誰學(xué)編程語言是專門來看DOM
的定義和陳年舊事的對(duì)吧,簡(jiǎn)單的來說,DOM Level 2通過對(duì)象借口支持了層疊樣式表,也就是咱們熟悉的CSS
~
剩下的DOM
資料講解不再在本文中贅述,有興趣的讀者可以買一本 《JavaScript高級(jí)程序設(shè)計(jì)(第四版)》 看看哦
DOM的好兄弟BOM!
說完了DOM
,咱們來看看BOM
是個(gè)啥玩意,用腳想都知道,這玩意肯定跟瀏覽器脫不了干系~
簡(jiǎn)單的來說,BOM
主要針對(duì)的是瀏覽器窗口的問題,比如彈出新窗口,移動(dòng)、縮放窗口,加載窗口信息等等~
畢竟,你也不想因?yàn)闉g覽器窗口的問題被DOM知道吧?
還是那句話,剩下的BOM
資料講解不再在本文中贅述,有興趣的讀者可以買一本 《JavaScript高級(jí)程序設(shè)計(jì)(第四版)》 慢慢摸索
小結(jié)
到此這篇關(guān)于JavaScript中DOM和BOM原理詳析的文章就介紹到這了,更多相關(guān)JS DOM和BOM內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 解析DHTML,JavaScript,DOM,BOM以及WEB標(biāo)準(zhǔn)的描述
- Javascript基礎(chǔ)知識(shí)(三)BOM,DOM總結(jié)
- javascript學(xué)習(xí)筆記(三)BOM和DOM詳解
- javascript bom是什么及bom和dom的區(qū)別
- 實(shí)現(xiàn)JavaScript的組成----BOM和DOM詳解
- JavaScript學(xué)習(xí)總結(jié)(一) ECMAScript、BOM、DOM(核心、瀏覽器對(duì)象模型與文檔對(duì)象模型)
- JavaScript中BOM和DOM詳解
- JavaScript的DOM與BOM的區(qū)別與用法詳解
- JavaScript中BOM,DOM和事件的用法詳解
相關(guān)文章
js實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制文本功能
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制文本的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04移動(dòng)端a標(biāo)簽下載文件重命名(download)不生效解決辦法
在移動(dòng)端使用a標(biāo)簽下載文件時(shí),文件重命名可能不生效,尤其是在APP內(nèi)嵌頁面中,這通常是因?yàn)榭缬騿栴}導(dǎo)致的,文中將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10javascript實(shí)現(xiàn)拖拽并替換網(wǎng)頁塊元素
實(shí)現(xiàn)類似于學(xué)生換座位的效果,將網(wǎng)頁內(nèi)的兩個(gè)元素通過拖拽的方式互換。2009-11-11javascript的switch用法注意事項(xiàng)分析
這篇文章主要介紹了javascript的switch用法注意事項(xiàng),實(shí)例分析了switch語句進(jìn)行判定的原理與使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02JS實(shí)現(xiàn)移動(dòng)端在線簽協(xié)議功能
這篇文章主要介紹了JS實(shí)現(xiàn)移動(dòng)端在線簽協(xié)議功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08