(一)
對(duì)DOM的兩個(gè)主要的擴(kuò)展是Selectors API(選擇符API)和HTML5。
(二)
jQuery的核心就是通過CSS選擇符查詢DOM文檔取得元素的引用,從而拋開了getElementById()和getElementsByTagName()。
(三)
Selector API Level 1的核心是兩個(gè)方法:querySelector()和querySelectorAll()。querySelector()接收一個(gè)CSS選擇符,返回與該模式匹配的第一個(gè)元素,沒找到返回null。
var selected = document.querySelector(".selected");//取得類為“selected”的第一個(gè)元素
querySelectorAll()返回所有匹配的元素,返回的是一個(gè)NodeList的實(shí)例(但不會(huì)不斷地對(duì)文檔進(jìn)行搜索和動(dòng)態(tài)查詢)。
(四)
對(duì)于元素間的空格,IE9之前的版本與其他瀏覽器的處理有差異,導(dǎo)致了在使用childNodes和firstChild等屬性時(shí)的行為不一致。為了彌補(bǔ)差異又保持DOM規(guī)范不變,Element Traversal規(guī)范新定義了一組屬性。firstElementChild等,不必?fù)?dān)心空白文本節(jié)點(diǎn)。
firstElementChild見我的另一篇筆記:http://www.itdecent.cn/writer#/notebooks/15702203/notes/17309252
(五)
HTML5為每個(gè)元素定義了classLlist屬性,用于在元素中添加,移除及切換 CSS 類。該屬性是 DOMTokenList 對(duì)象(一個(gè)只讀的類數(shù)組對(duì)象),你可以通過DOMTokenList定義的方法對(duì)其進(jìn)行修改。方法包括:add、remove、toggle(切換)、contains、item(索引)。
詳情:https://segmentfault.com/a/1190000009067946
(六)
焦點(diǎn)管理:
document.activeElement屬性會(huì)引用DOM中當(dāng)前獲得了焦點(diǎn)的元素(得到的值是INPUT、BUTTON這種)
document.hasFocus()方法用于確定文檔是否獲得了焦點(diǎn)(返回true或false)。它們的用途是提高web應(yīng)用的無障礙性。
(七)
HTML5擴(kuò)展了HTMLDocument
1、readyState 屬性返回當(dāng)前文檔的狀態(tài)(載入中……)。
該屬性返回以下值:
uninitialized - 還未開始載入
loading - 載入中
interactive - 已加載,文檔與用戶可以開始交互
complete - 載入完成
2、兼容模式,document.compatMode屬性(鑒別標(biāo)準(zhǔn)模式、混雜模式)
如果文檔處于“混雜模式”,則該屬性值為"BackCompat"
如果文檔處于“標(biāo)準(zhǔn)模式”或者“準(zhǔn)標(biāo)準(zhǔn)模式(almost standards mode)”,則該屬性為"CSS1Compat"
當(dāng)document.compatMode等于BackCompat時(shí),瀏覽器客戶區(qū)寬度是document.body.clientWidth;
當(dāng)document.compatMode等于CSS1Compat時(shí),瀏覽器客戶區(qū)寬度是document.documentElement.clientWidth。瀏覽器客戶區(qū)高度、滾動(dòng)條高度、滾動(dòng)條的Left、滾動(dòng)條的Top等等都包括在內(nèi),而不僅僅是body部分。
3、document.head屬性引用文檔的head元素。返回當(dāng)前文檔中的元素。如果有多個(gè)元素,則返回第一個(gè)。
(八)
插入標(biāo)記
innerHTML屬性(不要過多使用,影響性能)。
outerHTML屬性會(huì)返回包括自身元素的代碼。
insertAdjacentHTML()方法,按位置插入HTML文本。