TextRange對象是動(dòng)態(tài)HTML(DHTML)的高級特性,使用它可以實(shí)現(xiàn)很多和文本有關(guān)的任務(wù),例如搜索和選擇文本。文本范圍讓您可以選擇性的將字符、單詞和句子從文檔中挑選出來。TextRange對象是在HTML文檔將要顯示的文本流上建立開始和結(jié)束位置的抽象對象。
下面是TextRange的常用屬性與方法:
屬性
boundingHeight 獲取綁定TextRange對象的矩形的高度
boundingLeft 獲取綁定TextRange 對象的矩形左邊緣和包含TextRange對象的左側(cè)之間的距離
offsetLeft 獲取對象相對于版面或由offsetParent屬性指定的父坐標(biāo)的計(jì)算左側(cè)位置
offsetTop 獲取對象相對于版面或由offsetParent屬性指定的父坐標(biāo)的計(jì)算頂端位置
htmlText 獲取綁定TextRange對象的矩形的寬度
text 設(shè)置或獲取范圍內(nèi)包含的文本
方法
moveStart 更改范圍的開始位置
moveEnd 更改范圍的結(jié)束位置
collapse 將插入點(diǎn)移動(dòng)到當(dāng)前范圍的開始或結(jié)尾
move 折疊給定文本范圍并將空范圍移動(dòng)給定單元數(shù)
execCommand 在當(dāng)前文檔、當(dāng)前選中區(qū)或給定范圍上執(zhí)行命令
select 將當(dāng)前選擇區(qū)置為當(dāng)前對象
findText 在文本中搜索文本并將范圍的開始和結(jié)束點(diǎn)設(shè)置為包圍搜索字符串。
使用TextRange對象通常包括三個(gè)基本的步驟:
1.創(chuàng)建文本范圍
2.設(shè)置開始點(diǎn)和結(jié)束點(diǎn)
3.對范圍進(jìn)行操作
1.createTextRange()
創(chuàng)建一個(gè)TextRange對象,BODY、TEXT、TextArea、BUTTON等元素都支持這個(gè)方法。該方法返回一個(gè)TextRange對象。
2.move(”Unit”[,count])
move()方法執(zhí)行兩個(gè)操作。首先,方法在前一個(gè)結(jié)束點(diǎn)的位置重疊當(dāng)前文檔,將這里作為一個(gè)插入點(diǎn);下一步,它將插入點(diǎn)向前或向后移動(dòng)任意個(gè)字符、單詞或句子單位。
方法的第一個(gè)參數(shù)是字符串,它指定的單位有character(字符)、word(詞)、sentence(段落)、textedit。 textedit值將插入點(diǎn)移動(dòng)到整個(gè)文本范圍的結(jié)束處(不需要參數(shù))。如果指定為前三種單位,忽略參數(shù)時(shí)默認(rèn)值為1,也可以指定一個(gè)整數(shù)值來指示單元 數(shù),正數(shù)代表向前移動(dòng),負(fù)數(shù)代表向后移動(dòng)。
注意在move()方法執(zhí)行后范圍仍是重疊的。
3.select()
select()方法選擇當(dāng)前文本范圍內(nèi)的文本,這里的顯示光標(biāo)也必須利用它來實(shí)現(xiàn),因?yàn)樗^的”光標(biāo)”可以理解為邊界重合的范圍
上面的例子演示了利用moveStart()和moveEne()方法選擇范圍,出現(xiàn)的幾個(gè)方法的說明如下:
4.moveStart(”Unit”[,count])與moveEnd(”Unit”[,count])
moveStart()與moveEnd()方法類似于move()方法,默認(rèn)情況下開始點(diǎn)為容器第一個(gè)字符、結(jié)束點(diǎn)為最后一個(gè)字符
我們可以修改上面的selectText()函數(shù)來證明:
將開始點(diǎn)向前移動(dòng)一個(gè)字符、結(jié)束點(diǎn)向后移動(dòng)一個(gè)字符,運(yùn)行后可以看到選擇的范圍是除第1個(gè)字符和最后1個(gè)字符的整個(gè)文本范圍。
5.collapse([Boolean])
可以用collapse()方法把文本范圍從當(dāng)前尺寸重疊成字符間的單個(gè)插入點(diǎn)。collapse()方法的可選參數(shù)是Boolean值,它指出范圍是在當(dāng)前范圍的開始點(diǎn)重合,還是結(jié)束點(diǎn)重合。默認(rèn)值為true,在開始點(diǎn)重合:
6.findText(”searchString”[,searchScope,flags])
TextRange對象最有用的方法之一是findText()方法,其默認(rèn)行為是從開始點(diǎn)到結(jié)束點(diǎn)瀏覽文本范圍,搜索一個(gè)不區(qū)分大小寫的字符串 匹配。如果在范圍中發(fā)現(xiàn)一個(gè)實(shí)例,范圍的開始點(diǎn)和結(jié)束點(diǎn)就放到這個(gè)文本中,方法返回true;否則返回false,開始點(diǎn)和結(jié)束點(diǎn)都不動(dòng)。方法僅搜索顯示 文本,而任何標(biāo)記或?qū)傩远疾粫?huì)被搜索。
可選參數(shù)searchScope是一個(gè)整數(shù)值,它指示從開始點(diǎn)的字符數(shù),值越大,包含在搜索范圍的文本越多;負(fù)值將迫使搜索操作從當(dāng)前開始點(diǎn)向后搜索。
可選參數(shù)flag用來設(shè)置搜索是否區(qū)分大小寫,或者是否僅匹配整個(gè)單詞。參數(shù)是整數(shù)值,它用按位組合的數(shù)學(xué)方法計(jì)算單個(gè)值,這些值能容納一個(gè)或多 個(gè)設(shè)置。匹配整個(gè)單詞的值為2;匹配大小寫的值為4;如果只想匹配一項(xiàng),則只提供希望的值就夠了,但對于兩種行為,要用位操作XOR操作符(^操作符)使 值為6。
findText()方法最常用的應(yīng)用包括范圍中的查找和替換操作,以及格式化一個(gè)字符串的實(shí)例,因?yàn)樗阉魍ǔR苑秶漠?dāng)前開始點(diǎn)開始,所以再次 查詢要將開始點(diǎn)移到范圍中匹配文本的末尾(如示例3),移動(dòng)后才能使findText()繼續(xù)瀏覽剩下的文本范圍,來查找另一個(gè)匹配。可以使用 collapse(false)方法迫使開始點(diǎn)移動(dòng)第一個(gè)匹配的范圍的結(jié)束點(diǎn)。所以示例3的findText()函數(shù)也可以修改為:
6.parentElement()
parentElement()方法返回包含文本范圍容器的引用
獲得光標(biāo)選中文本的DOM對象
新聞熱點(diǎn)
疑難解答