摘要:擴(kuò)展選擇符的核心是兩個(gè)方法和。目前已完全支持的瀏覽器有和。在寫(xiě)模式下,會(huì)根據(jù)指定的字符串創(chuàng)建新的子樹(shù),然后用這個(gè)子樹(shù)完全替換調(diào)用元素。在刪除帶有事件處理程序或引用了其他對(duì)象子樹(shù)時(shí),就有可能導(dǎo)致內(nèi)存占用問(wèn)題。刪除集合中指定位置的規(guī)則。
DOM擴(kuò)展 選擇符API
Selectors API Level 1 的核心是兩個(gè)方法:querySelector()和querySelectorAll()。在兼容的瀏
覽器中,可以通過(guò)Document 及Element 類型的實(shí)例調(diào)用它們。目前已完全支持Selectors API Level 1
的瀏覽器有IE 8+、Firefox 3.5+、Safari 3.1+、Chrome 和Opera 10+。
//取得body 元素 var body = document.querySelector("body"); //取得ID 為"myDiv"的元素 var myDiv = document.querySelector("#myDiv"); //取得類為"selected"的第一個(gè)元素 var selected = document.querySelector(".selected"); //取得類為"button"的第一個(gè)圖像元素 var img = document.body.querySelector("img.button");querySelectorAll()方法
//取得某中的所有元素(類似于getElementsByTagName("em")) var ems = document.getElementById("myDiv").querySelectorAll("em"); //取得類為"selected"的所有元素 var selecteds = document.querySelectorAll(".selected"); //取得所有元素中的所有元素 var strongs = document.querySelectorAll("p strong"); HTML5 與類相關(guān)的擴(kuò)充 getElementsByClassName()方法
//取得所有類中包含"username"和"current"的元素,類名的先后順序無(wú)所謂 var allCurrentUsernames = document.getElementsByClassName("username current");支持 getElementsByClassName()方法的瀏覽器有IE 9+、Firefox 3+、Safari 3.1+、Chrome 和
焦點(diǎn)管理 document.activeElement
Opera 9.5+。這個(gè)屬性指向的是當(dāng)前獲得焦點(diǎn)的元素,使用focus()可以讓元素獲得焦點(diǎn)
var button = document.getElementById("myButton"); button.focus(); alert(document.activeElement === button); //truedocument.hasFocus()這個(gè)方法用于確定文檔是否獲得了焦點(diǎn)
var button = document.getElementById("myButton"); button.focus(); alert(document.hasFocus()); //true實(shí)現(xiàn)了這兩個(gè)屬性的瀏覽器的包括IE 4+、Firefox 3+、Safari 4+、Chrome 和Opera 8+。
HTMLDocument的變化 readyState 屬性document.readyState表示文檔的加載進(jìn)度,它有兩個(gè)值分別為"loading"和"complete".
if(document.readyState == "complete"){ //執(zhí)行操作 }支持 readyState 屬性的瀏覽器有IE4+、Firefox 3.6+、Safari、Chrome 和Opera 9+。
compatMode 的屬性document.compatMode屬性告訴開(kāi)發(fā)人員瀏覽器采用了哪種渲染模式。在標(biāo)準(zhǔn)模式下,document.compatMode 的
值等于"CSS1Compat",而在混雜模式下,document.compatMode 的值等于"BackCompat"。if (document.compatMode == "CSS1Compat"){ alert("Standards mode"); } else { alert("Quirks mode"); }兼容性:IE、Firefox、Safari 3.1+、Opera 和Chrome
字符編碼 document.charset當(dāng)前文檔的字符編碼
document.defaultCharset當(dāng)前文檔的默認(rèn)字符編碼
自定義數(shù)據(jù)屬性HTML5 規(guī)定可以為元素添加非標(biāo)準(zhǔn)的屬性,但要添加前綴data-,目的是為元素提供與渲染無(wú)關(guān)的信息,或者提供語(yǔ)義信息。
var div = document.getElementById("myDiv"); //取得自定義屬性的值 var appId = div.dataset.appId; var myName = div.dataset.myname; //設(shè)置值 div.dataset.appId = 23456; div.dataset.myname = "Michael"; if (div.dataset.myname){ alert("Hello, " + div.dataset.myname); }支持自定義數(shù)據(jù)屬性的瀏覽器有Firefox 6+和Chrome
插入標(biāo)記 innerHTML屬性在讀模式下,innerHTML 屬性返回與調(diào)用元素的所有子節(jié)點(diǎn)(包括元素、注釋和文本節(jié)點(diǎn))對(duì)應(yīng)
outerHTML 屬性
的HTML 標(biāo)記。在寫(xiě)模式下,innerHTML 會(huì)根據(jù)指定的值創(chuàng)建新的DOM樹(shù),然后用這個(gè)DOM樹(shù)完全
替換調(diào)用元素原先的所有子節(jié)點(diǎn)在讀模式下,outerHTML 返回調(diào)用它的元素及所有子節(jié)點(diǎn)的HTML 標(biāo)簽。在寫(xiě)模式下,outerHTML
內(nèi)存與性能問(wèn)題
會(huì)根據(jù)指定的HTML 字符串創(chuàng)建新的DOM 子樹(shù),然后用這個(gè)DOM子樹(shù)完全替換調(diào)用元素。使用本節(jié)介紹的方法替換子節(jié)點(diǎn)可能會(huì)導(dǎo)致瀏覽器的內(nèi)存占用問(wèn)題,尤其是在IE 中,問(wèn)題更加明
scrollIntoView()方法
顯。在刪除帶有事件處理程序或引用了其他JavaScript 對(duì)象子樹(shù)時(shí),就有可能導(dǎo)致內(nèi)存占用問(wèn)題。假設(shè)
某個(gè)元素有一個(gè)事件處理程序(或者引用了一個(gè)JavaScript 對(duì)象作為屬性),在使用前述某個(gè)屬性將該元
素從文檔樹(shù)中刪除后,元素與事件處理程序(或JavaScript 對(duì)象)之間的綁定關(guān)系在內(nèi)存中并沒(méi)有一并
刪除。如果這種情況頻繁出現(xiàn),頁(yè)面占用的內(nèi)存數(shù)量就會(huì)明顯增加。因此,在使用innerHTML、
outerHTML 屬性方法時(shí),最好先手工刪除要被替換的元素的所有事件處理程序和JavaScript 對(duì)象屬性//讓元素可見(jiàn) document.forms[0].scrollIntoView();DOM2和DOM3DOM2 和DOM3級(jí)分為許多模塊(模塊之間具有某種關(guān)聯(lián)),分別描述了DOM 的某個(gè)非常具體的子集。這些模塊如下
DOM2 級(jí)核心(DOM Level 2 Core):在1 級(jí)核心基礎(chǔ)上構(gòu)建,為節(jié)點(diǎn)添加了更多方法和屬性。
DOM2 級(jí)視圖(DOM Level 2 Views):為文檔定義了基于樣式信息的不同視圖。
DOM2 級(jí)事件(DOM Level 2 Events):說(shuō)明了如何使用事件與DOM文檔交互。
DOM2 級(jí)樣式(DOM Level 2 Style):定義了如何以編程方式來(lái)訪問(wèn)和改變CSS 樣式信息。
DOM2 級(jí)遍歷和范圍(DOM Level 2 Traversal and Range):引入了遍歷DOM 文檔和選擇其特定部分的新接口。
DOM2 級(jí) HTML(DOM Level 2 HTML):在1 級(jí)HTML 基礎(chǔ)上構(gòu)建,添加了更多屬性、方法和新接口
樣式在 HTML 中定義樣式的方式有3 種:通過(guò)元素包含外部樣式表文件、使用元素
定義嵌入式樣式,以及使用style 特性定義針對(duì)特定元素的樣式。“DOM2 級(jí)樣式”模塊圍繞這3 種應(yīng)用
樣式的機(jī)制提供了一套API。要確定瀏覽器是否支持DOM2 級(jí)定義的CSS 能力,可以使用下列代碼var supportsDOM2CSS = document.implementation.hasFeature("CSS", "2.0"); var supportsDOM2CSS2 = document.implementation.hasFeature("CSS2", "2.0");訪問(wèn)元素的樣式任何支持 style 特性的HTML 元素在JavaScript 中都有一個(gè)對(duì)應(yīng)的style 屬性。訪問(wèn)和設(shè)置元素的css屬性可以這樣操作:
var div = document.getElementById("myDiv"); console.log(div.style.color); //獲取color值 div.style.color = "red"; //設(shè)置color值 div.style.fontSize = "20px";//設(shè)置font-size的值(這里會(huì)將有短橫線的值轉(zhuǎn)化為駝峰命名來(lái)獲取或設(shè)置)注:IE6+,chrome,firfox支持這種獲取或設(shè)置css的方式.這里有一個(gè)特例,由于float是保留關(guān)鍵字,所以通過(guò)cssFloat來(lái)訪問(wèn)和設(shè)置,而IE中則通過(guò)styleFloat來(lái)設(shè)置或訪問(wèn).
元素的style對(duì)象除了有css的樣式屬性外,也包含了自己的一些屬性,具體如下:cssText:通過(guò)它能夠訪問(wèn)和設(shè)置style 特性中的CSS代碼.支持IE6+,chrome,firfox.
length:應(yīng)用給元素的CSS 屬性的數(shù)量。支持IE9+,chrome,firfox.
parentRule:表示CSS 信息的CSSRule 對(duì)象,后面將討論CSSRule 類型。
getPropertyPriority(propertyName):如果給定的屬性使用了!important 設(shè)置,則返回"important";否則,返回空字符串。支持IE9+,chrome,firfox.
getPropertyValue(propertyName):返回給定屬性的字符串值。支持IE9+、Safari,Chrome,firfox
item(index):返回給定位置的CSS 屬性的名稱。支持IE9+、Safari,Chrome,firfox
removeProperty(propertyName):從樣式中刪除給定屬性。支持IE9+、Safari,Chrome,firfox
setProperty(propertyName,value,priority):將給定屬性設(shè)置為相應(yīng)的值,并加上優(yōu)先權(quán)標(biāo)志("important"或者一個(gè)空字符串)。支持IE9+、Safari,Chrome,firfox
//設(shè)置style對(duì)象的cssText屬性 myDiv.style.cssText = "width: 25px; height: 100px; background-color: green"; alert(myDiv.style.cssText);操作樣式表CSSStyleSheet 類型表示的是樣式表,包括通過(guò)元素包含的樣式表和在元素中定義的樣式表,使用下面的代碼可以確定瀏覽器是否支持DOM2 級(jí)樣式表:
var supportsDOM2StyleSheets =document.implementation.hasFeature("StyleSheets", "2.0");CSSStyleSheet 繼承自StyleSheet,后者可以作為一個(gè)基礎(chǔ)接口來(lái)定義非CSS 樣式表。從StyleSheet 接口繼承而來(lái)的屬性如下:
disabled:表示樣式表是否被禁用的布爾值。這個(gè)屬性是可讀/寫(xiě)的,將這個(gè)值設(shè)置為true可以禁用樣式表。
href:如果樣式表是通過(guò)包含的,則是樣式表的URL;否則,是null。
media:當(dāng)前樣式表支持的所有媒體類型的集合。與所有DOM 集合一樣,這個(gè)集合也有一個(gè)length 屬性和一個(gè)item()方法。也可以使用方括號(hào)語(yǔ)法取得集合中特定的項(xiàng)。如果集合是空列表,表示樣式表適用于所有媒體。在IE 中,media 是一個(gè)反映和元素media特性值的字符串。
ownerNode:指向擁有當(dāng)前樣式表的節(jié)點(diǎn)的指針,樣式表可能是在HTML 中通過(guò)或引入的(在XML 中可能是通過(guò)處理指令引入的)。如果當(dāng)前樣式表是其他樣式表通過(guò)@import 導(dǎo)入的,則這個(gè)屬性值為null。IE 不支持這個(gè)屬性。
parentStyleSheet:在當(dāng)前樣式表是通過(guò)@import 導(dǎo)入的情況下,這個(gè)屬性是一個(gè)指向?qū)胨臉邮奖淼闹羔槨?/p>
title:ownerNode 中title 屬性的值。
type:表示樣式表類型的字符串。對(duì)CSS 樣式表而言,這個(gè)字符串是"type/css"。
除了 disabled 屬性之外,其他屬性都是只讀的。在支持以上所有這些屬性的基礎(chǔ)上,CSSStyleSheet 類型還支持下列屬性和方法:
cssRules:樣式表中包含的樣式規(guī)則的集合。IE 不支持這個(gè)屬性,但有一個(gè)類似的rules 屬性。
ownerRule:如果樣式表是通過(guò)@import 導(dǎo)入的,這個(gè)屬性就是一個(gè)指針,指向表示導(dǎo)入的規(guī)則;否則,值為null。IE 不支持這個(gè)屬性。
deleteRule(index):刪除cssRules 集合中指定位置的規(guī)則。IE 不支持這個(gè)方法,但支持一個(gè)類似的removeRule()方法。
insertRule(rule,index):向cssRules 集合中指定的位置插入rule 字符串。IE 不支持這個(gè)方法,但支持一個(gè)類似的addRule()方法。
應(yīng)用于文檔的所有樣式表是通過(guò) document.styleSheets 集合來(lái)表示的。也可以直接通過(guò)或元素取得CSSStyleSheet 對(duì)象。DOM 規(guī)定了一個(gè)包含CSSStyleSheet 對(duì)象的屬性,名叫sheet;除了IE,其他瀏覽器都支持這個(gè)屬性。IE 支持的是styleSheet屬性
元素大小 偏移量offsetHeight:元素在垂直方向上占用的空間大小,以像素計(jì)。包括元素的高度、(可見(jiàn)的)水平滾動(dòng)條的高度、上邊框高度和下邊框高度。
offsetWidth:元素在水平方向上占用的空間大小,以像素計(jì)。包括元素的寬度、(可見(jiàn)的)垂直滾動(dòng)條的寬度、左邊框?qū)挾群陀疫吙驅(qū)挾取?/p>
offsetLeft:元素的左外邊框至包含元素的左內(nèi)邊框之間的像素距離。
offsetTop:元素的上外邊框至包含元素的上內(nèi)邊框之間的像素距離。
客戶區(qū)大小有關(guān)客戶區(qū)大小的屬性有兩個(gè):clientWidth 和clientHeight。其中,clientWidth 屬性是元素內(nèi)容區(qū)寬度加上左右內(nèi)邊距寬度;clientHeight 屬性是元素內(nèi)容區(qū)高度加上上下內(nèi)邊距高度
滾動(dòng)大小scrollHeight:在沒(méi)有滾動(dòng)條的情況下,元素內(nèi)容的總高度。
scrollWidth:在沒(méi)有滾動(dòng)條的情況下,元素內(nèi)容的總寬度。
scrollLeft:被隱藏在內(nèi)容區(qū)域左側(cè)的像素?cái)?shù)。通過(guò)設(shè)置這個(gè)屬性可以改變?cè)氐臐L動(dòng)位置。
scrollTop:被隱藏在內(nèi)容區(qū)域上方的像素?cái)?shù)。通過(guò)設(shè)置這個(gè)屬性可以改變?cè)氐臐L動(dòng)位置。
確定元素大小IE、Firefox 3+、Safari 4+、Opera 9.5 及Chrome 為每個(gè)元素都提供了一個(gè)getBoundingClientRect()方
遍歷
法。這個(gè)方法返回會(huì)一個(gè)矩形對(duì)象,包含4 個(gè)屬性:left、top、right 和bottom。這些屬性給出了元素在頁(yè)面中相對(duì)于視口的位置。但是,瀏覽器的實(shí)現(xiàn)稍有不同。IE8 及更早版本認(rèn)為文檔的左上角坐
標(biāo)是(2, 2),而其他瀏覽器包括IE9 則將傳統(tǒng)的(0,0)作為起點(diǎn)坐標(biāo)。因此,就需要在一開(kāi)始檢查一下位于
(0,0)處的元素的位置,在IE8 及更早版本中,會(huì)返回(2,2),而在其他瀏覽器中會(huì)返回(0,0).DOM2 級(jí)遍歷和范圍”模塊定義了兩個(gè)用于輔助完成順序遍歷DOM 結(jié)構(gòu)的類型:NodeIterator
和TreeWalker。這兩個(gè)類型能夠基于給定的起點(diǎn)對(duì)DOM 結(jié)構(gòu)執(zhí)行深度優(yōu)先(depth-first)的遍歷操作。
在與DOM 兼容的瀏覽器中(Firefox 1 及更高版本、Safari 1.3 及更高版本、Opera 7.6 及更高版本、Chrome
0.2 及更高版本),都可以訪問(wèn)到這些類型的對(duì)象。IE 不支持DOM 遍歷。使用下列代碼可以檢測(cè)瀏覽器
對(duì)DOM2 級(jí)遍歷能力的支持情況。var supportsTraversals = document.implementation.hasFeature("Traversal", "2.0"); var supportsNodeIterator = (typeof document.createNodeIterator == "function"); var supportsTreeWalker = (typeof document.createTreeWalker == "function");范圍為了讓開(kāi)發(fā)人員更方便地控制頁(yè)面,“DOM2 級(jí)遍歷和范圍”模塊定義了“范圍”(range)接口。通
過(guò)范圍可以選擇文檔中的一個(gè)區(qū)域,而不必考慮節(jié)點(diǎn)的界限(選擇在后臺(tái)完成,對(duì)用戶是不可見(jiàn)的)。
在常規(guī)的DOM 操作不能更有效地修改文檔時(shí),使用范圍往往可以達(dá)到目的。Firefox、Opera、Safari 和
Chrome 都支持DOM 范圍。IE 以專有方式實(shí)現(xiàn)了自己的范圍特性。文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86134.html
摘要:簡(jiǎn)介原文鏈接簡(jiǎn)稱是一種輕量級(jí),解釋型的編程語(yǔ)言,其函數(shù)是一等公民。標(biāo)準(zhǔn)的目標(biāo)是讓任何一種程序設(shè)計(jì)語(yǔ)言能操控使用任何一種標(biāo)記語(yǔ)言編寫(xiě)出的任何一份文檔。核心規(guī)定了如何映射基于的文檔結(jié)構(gòu),以便簡(jiǎn)化對(duì)文檔的任意部分的訪問(wèn)和操作。 JavaScript 簡(jiǎn)介 原文鏈接 JavaScript ( 簡(jiǎn)稱:JS ) 是一種 輕量級(jí),解釋型 的編程語(yǔ)言,其函數(shù)是一等公民。眾所周知,它是用于網(wǎng)頁(yè)開(kāi)發(fā)的腳...
摘要:和級(jí)分為許多模塊,分別描述了的某個(gè)非常具體的子集。這些模塊主要有核心視圖事件樣式遍歷和范圍以及。另外還有方法和方法框架的變化框架和內(nèi)嵌框架分別用和表示,它們?cè)诩?jí)中都有一個(gè)新屬性這個(gè)屬性包含一個(gè)指針,指向表示框架內(nèi)容的文檔對(duì)象。 DOM2和DOM3級(jí)分為許多模塊,分別描述了DOM的某個(gè)非常具體的子集。這些模塊主要有核心(Core)、視圖(Views)、事件(Events)、樣式(Styl...
摘要:如果不需要偽元素信息,第二個(gè)參數(shù)可以輸操作樣式表類型表示的是樣式表,包括通過(guò)元素包含的樣式表和在元素中定義的樣式表表示樣式表是否被禁用的布爾值。包括元素的高度可見(jiàn)的水平滾動(dòng)條的高度上邊框高度和下邊框高度。顯示處理指令節(jié)點(diǎn)。 DOM2和DOM3 DOM變化 針對(duì)XML命名空間的變化 有了XML命名空間,不同XML文檔的元素就可以混合在一起,共同構(gòu)成格式良好的文檔,而不必?fù)?dān)心發(fā)生命名沖突...
摘要:以下內(nèi)容都是一些概念性的知識(shí)點(diǎn)弄懂這些基本的概念是我們?cè)谑澜缈吹酶h(yuǎn)的墊腳石誕生于年年公司開(kāi)發(fā)發(fā)布時(shí)臨時(shí)將名字改為當(dāng)時(shí)它的主要目的是處理以前由服務(wù)端語(yǔ)言負(fù)責(zé)的輸入驗(yàn)證操作隨著其發(fā)展現(xiàn)在已不再局限于數(shù)據(jù)驗(yàn)證而是具備了與瀏覽器窗口及其內(nèi)容等幾乎 以下內(nèi)容都是一些概念性的知識(shí)點(diǎn),弄懂這些基本的概念是我們?cè)贘avaScript世界看得更遠(yuǎn)的墊腳石. Javascript Javascript誕...
摘要:對(duì)象包含下列屬性返回整條規(guī)則對(duì)應(yīng)的文本包括選擇符和花括號(hào)返回當(dāng)前規(guī)則的選擇符一個(gè)對(duì)象返回規(guī)則中所有的樣式當(dāng)前規(guī)則所屬的樣式表表示規(guī)則類型的常量值。從文檔中分離解除引用推薦在使用完范圍后再執(zhí)行上述兩個(gè)步驟。 DOM1級(jí)主要定義了HTML和XML文檔的底層結(jié)構(gòu),DOM2和DOM3則在DOM1的基礎(chǔ)上引入了更多的交互功能,支持了更高級(jí)的XML特性。DOM2和DOM3分為許多模塊(模塊之間具...
閱讀 2957·2021-11-08 13:20
閱讀 1030·2021-09-22 15:20
閱讀 660·2019-08-30 15:53
閱讀 1964·2019-08-30 15:43
閱讀 1278·2019-08-29 17:21
閱讀 539·2019-08-29 12:15
閱讀 2374·2019-08-28 17:51
閱讀 3142·2019-08-26 13:26