成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

TextRange對象參考

alanoddsoff / 3265人閱讀

摘要:在以及低于版本的火狐瀏覽器中,至少有一個對象屬于對象,因為文本選區(qū)永遠是一個層次結(jié)構(gòu)的連續(xù)部分。在版以后的火狐瀏覽器中,鼠標選網(wǎng)頁內(nèi)容時按住鍵,可以選中多個文本域。方法檢測兩個對象是否是完全相同的。返回當前對象是否包含了指定的對象。

原文來自TextRange object。
textRange對象代表document中一個連續(xù)的部分。

TextRange對象為實現(xiàn)一些實用功能提供了幾個屬性和方法。利用TextRange對象,你可以取得并修改文檔的任意部分;你可以得到文檔中的一個連續(xù)部分的定位以及一些其它的幾何屬性;你可以取得并修改文檔中已選中的內(nèi)容。

Internet Explorer以及部分Opera瀏覽器支持TextRange對象。

在火狐、Opera、Google Chrome以及Safari中,Range對象提供了簡單的功能。Internet Explorer 9.0以后的版本同樣支持Range對象。

因為所有的現(xiàn)代瀏覽器都支持Range對象,只有在Range對象不被支持的情況下才使用TextRange對象。本文后面的內(nèi)容將一起介紹這兩個對象。

創(chuàng)建一個TextRange對象有三個方法:

通過createTextRange方法創(chuàng)建一個TextRange對象。body對象以及一些其它的HTML元素支持createTextRange方法。新創(chuàng)建的TextRange對象的邊界點(開始點和結(jié)束點)與這些HTML元素的內(nèi)容對齊。

你可以使用document.createRange方法創(chuàng)建一個空的Range對象。后面的章節(jié)描述了修改一個Range對象的邊界點的方法。

在Internet Explorer中,有三種不同類型的選區(qū)(selection):

控件選區(qū) - 選區(qū)包含了控件。

文本選區(qū) - 選區(qū)只包含文本。

空選區(qū) - 即沒有選區(qū)(或者說選中的內(nèi)容是不可用的)。

利用selection對象的type屬性可以得到選區(qū)的類型。當選區(qū)包含文本或者沒有選中的內(nèi)容時,用selection對象的createRange方法可以取得一個TextRange對象。返回的TextRange對象的邊界點與選區(qū)的內(nèi)容對齊。

為了得到選區(qū)的內(nèi)容,selection對象還支持其它的方法,比如說createRangeCollection方法,它返回一個TextRanges集合,包含了若干個TextRange對象。每個TextRange對象代表這個選區(qū)的一個連續(xù)部分。該createRangeCollection方法對多重選區(qū)來說很有用。但是Internet Explorer不支持它。所以使用createRange方法就足夠了。

  

使用selectionRange對象的getRangeAt方法可以取得一個代表當前選區(qū)的Range對象。selectRange對象可以包含超過一個Range對象。每個Range對象代表選區(qū)的一個連續(xù)部分。

  

在Internet Explorer、Opera、Google Chrome、Safari以及低于3.0版本的火狐瀏覽器中,至少有一個Range對象屬于selectionRange對象,因為文本選區(qū)永遠是一個DOM層次結(jié)構(gòu)的連續(xù)部分。

  

在3.0版以后的火狐瀏覽器中,鼠標選網(wǎng)頁內(nèi)容時按住Ctrl鍵,可以選中多個文本域。如果你想選中離散的文本塊,請使用addRange方法。

使用duplicate方法可以復制出一個已有的TextRange對象的副本。返回的對象與原始對象完全相同。

如果已存在一個TextRange對象的實例,你可以用下面的方法修改它的邊界:

如果你想把一個TextRange對象的邊界點與一個元素的內(nèi)容對齊,而且這個元素支持createTextRange方法,請在這個元素上使用createTextRange方法。對其它元素,請使用body.createTextRange方法來創(chuàng)建一個TExtRange對象,并對這個必要的元素使用moveToElementText方法。

  

如果你想把一個Range對象的邊界點與一個元素或元素的內(nèi)容對齊,請使用selectNode或selectNodeContents方法。

使用moveStart方法和moveEnd方法可以移動一個TextRange對象的開始點的結(jié)束點。如果你想把一個TextRange對象的開始點和結(jié)束點與另一個TextRange對象的開始點和結(jié)束點對齊,請使用setEndPoint方法。

  

如果你想分別地修改一個Range的開始點和結(jié)束點,請使用setStart方法、setStartBefore方法、setStartAfter方法,以及setEnd方法、setEndBefore方法、setEndAfter方法。

利用collapse方法,你可以移動開始點或者結(jié)束點,反之亦然。TextRange對象和Range對象都可以用這個方法。

擴展TextRange對象的內(nèi)容,請使用expand方法以實現(xiàn)它。

如果你一個TextRange對象的定位,你可以:

利用offsetLeftc以及offsetTop屬性,可以得到該TextRange對象的坐標。不能取得該元素以及一個TextRamge對象用開始點和結(jié)束點定義的偏移。

如果你要取得一個TextRange對象的矩形邊界,請使用boundingLeft、boundingTop、boundWidth以及boundingHeight屬性。

如果你要取得一個TextRange對象的準確形狀,請使用getClientRects方法。它將取得一個TextRectangles集合,包含了幾個TextRectangle對象。每個TextRectangle對象代表屬于這個TextRange對象的一行文本。

上面的提到所有的坐標都是相對于瀏覽器窗口的左上角的。

document.elementFromPoint方法可以幫助你取得位于指定坐標上的元素。

這個包含了整個TextRange對象的元素,如果你想要取得它在DOM層次結(jié)構(gòu)中元素的深度,請使用parentElement方法。

  

一個Range對象是用開始點和結(jié)束點定義的。一個元素以及一個位置定義了一個點。如果這個元素只有文本內(nèi)容(TextNode、CDATASection或者CommentNode),這個位置指定了元素中的一個字符位置;如果這個元素并非只有文本內(nèi)容,這個位置指定了元素中一個子元素的序號索引。

  

和(endContainer,endOffset)屬性指定了一個Range對象的開始點和結(jié)束點。startOffset屬性指定在這個startContainer元素中Range開始的位置。endOffset屬性指定了在這個endContainer元素中Range結(jié)束的位置。

  

如果你想取得包含了整個Range對象的元素在DOM層次結(jié)構(gòu)中節(jié)點的深度,請使用commonAncestorContainer屬性。

當一個TextRange的開始點和結(jié)束點是同一個位置的時候,這個TextRange對象就是收縮的。你可以用多種方法來檢測它是否處于收縮狀態(tài)。比如說,用TextRange對象的文本內(nèi)容來檢測。用text屬性可取得一個TextRange對象的文本內(nèi)容,并作為字符串來對待。如果這個text屬性代表的字符串的長度返回0,則TextRange對象是收縮的。

  

使用collapsed方法可以檢測Range對象是否處于收縮狀態(tài)。

比較兩個TextRange對象的定位,可以使用compareEndPoints方法。它比較了這些對象的邊界點。

要想檢測一個TextRange對象是否包含另一個TextRange對象,可以用inRange方法。isEqual方法檢測兩個TextRange對象是否是完全相同的。

  

兩個Range對象的定位可以通過compareboundaryPoint方法來比較。它比較了這些對象的邊界,類似于TextRange對象中的compareEndPoints方法。

  

請注意,雖然compareboundaryPoints方法和compareEndPoints方法的語法是相似的,但是同樣的案例,在不同的瀏覽器中,它們的行為是不同的。請閱讀這兩個方法的頁面以了解詳細區(qū)別。

  

如果你想檢測一個點(一個(element,position)對,其中position指定了element內(nèi)部的一個索引或者說一個字符位置)是否位于一個Range內(nèi)部,請使用comparePoint或者isPointInRange方法。

操作一個TextRange對象的內(nèi)容:

text屬性能夠設置或取得一個TextRange對象的文本內(nèi)容,作為一個字符串。

如果你需要HTML格式的內(nèi)容,請使用htmlText屬性。

如果要替換一個帶有HTML格式文本的TextRange對象的內(nèi)容,請使用pasteHTML方法。你還可以用這個方法來刪除這些內(nèi)容(只需要在調(diào)用pasteHTML時用空字符串作為參數(shù)。)

  

toString方法取得一個Range對象的文本內(nèi)容,作為一個字符串。

如果你需要以層次結(jié)構(gòu)DOM的形式取得一個Range對象的內(nèi)容,請使用cloneContents方法和extractContents方法。這兩個方法會從Range內(nèi)容中建立一個DocumentFragment對象。

要想從document中移除一個Range對象的內(nèi)容,請使用deleteContents方法。

要想向Range對象中插入一個新元素,請使用insertNode方法。

選擇一個TextRange對象的內(nèi)容:

直接調(diào)用TextRange對象的select方法(多文本選區(qū)中這個方法不可用)。
> 首先調(diào)用window.getSelection方法來接收一個從屬于當前選區(qū)的selectionRange對象。如果你想給當前選區(qū) 添加一個Range的內(nèi)容,直接調(diào)用addRange方法就可以把這個Range對象添加到selectionRange對象中。如果你只想要一個被選中的Range的內(nèi)容,在調(diào)用addRange方法加入這個Range對象之前,先調(diào)用selectionRange對象的removeAllRanges方法。

TextRange對象的一些額外的功能:

可以用execCommand方法編輯一個TextRange對象的內(nèi)容,就像在富文本編輯器中那樣。你可以修改背景色或者前景色,你可以使字體變成粗體、斜體,你可以用剪貼板剪切、復制以及粘貼內(nèi)容,它提供了一些其它的功能。

用getBookmark方法,可以把一個TextRange對象保存為bookmark。之后可以用moveToBookmark方法創(chuàng)建一個TextRange對象。該bookmark,以及這個用moveToBookmark方法創(chuàng)建的TextRange對象與被保存的那個TextRange對象是完全相同的。

語法:

用下面的方法可以訪問textRange對象:

selection.createRange()

object.createTextRange()

TextRanges.item(index)

可能的成員: 屬性:
屬性名 說明
boundingHeight 返回一個整型值,指定了當前的TextRange對象的邊界矩形的高度,以像素為單位。
boundingLeft 返回一個整型數(shù),指定了當前的TextRange對象的邊界矩形的左邊緣坐標,以像素為單位。
boundingTop 返回一個整型數(shù),指定了當前的TextRange對象的邊界矩形的上邊緣坐標,以像素為單位。
boundingWidth 返回一個整型數(shù),指定了當前TextRange對象的邊界矩形的寬度,以像素為單位。
htmlText 返回屬于一個TextRange對象的HTML源碼,作為一個字符串。
offsetLeft 返回一個對象相對于它的定位父元素[1]的左邊緣的左坐標位置,以像素為單位。
offsetTop 返回一個對象相對于它的定位父元素[1]的頂邊緣的頂坐標位置,以像素為單位。
text 用一個字符串設置一個TextRange對象內(nèi)部的文本,或者返回一個TextRange對象內(nèi)部的文本,作為一個字符串。
方法
方法名 說明
collapse 把一個range對象的開始點移動到它的結(jié)束點,或者相反。
compareEndPoints 比較兩個textRange對象的開始點和結(jié)束點的位置。
duplicate 返回當前TextRange對象的一個精確的復制副本。
execCommand 在某個對象上運行commands
expand 用一個字符、句子或者詞語,在插入點擴展TextRange對象的內(nèi)容。
findText 在document中查找指定的文本,并關(guān)聯(lián)到一個TextRange對象。
getBookmark 把當前的TextRange對象保存到一個字符串中,之后可以用moveToBookmark方法返回原始的TextRange對象。
getBoundingClientRect 返回一個TextRectangle對象,指定當前元素或者TextRange對象的邊界矩形,以像素為單位,相對于瀏覽器窗口的左上角。
getClientRects 返回一個TextRectangles集合,指定當前元素或者TextRange對象的精確形狀。
inRange 返回當前TextRange對象是否包含了指定的TextRange對象。
isEqual 返回當前的TextRange對象是否與指定的TextRange對象完全相同。
move 把當前的TextRange對象的結(jié)束點移到它的開始點,并把這個收縮的TextRange對象移動指定的字距。
moveEnd 把當前的TextRange對象的結(jié)束點移動指定字距。
moveStart 把當前的TextRange對象的開始點移動指定字距。
moveToBookmark 把當前的TextRange對象的開始點和結(jié)束點移到指定bookmark代表的位置。
moveToElementText 把當前的TextRange對象的開始點和結(jié)束點對齊到指定的元素的文本內(nèi)容。
moveToPoint 把當前的TextRange對象的開始點和結(jié)束點移動到指定的位置。
parentElement 返回在DOM層次結(jié)構(gòu)中包含了整個TextRange對象的最深的節(jié)點的引用。
pasteHTML 把當前TextRange對象的內(nèi)容替換為指定的HTML格式的文本。
queryCommandEnabled 用execCommand方法,返回這個指定的command是否能被執(zhí)行成功。
queryCommandIndeterm 返回指定的command是否在一個不確定的狀態(tài)中。
queryCommandState 返回指定的command當前的狀態(tài)
queryCommandSupported 返回當前的對象是否支持指定的command。
queryCommandText 返回指定的command的說明描述。
queryCommandValue 返回指定的command的實際的值。
scrollIntoView 把指定的元素滾致到文檔的可見區(qū)域。
select 選擇包含在當前TextRange或者controlRange對象中的所有的文本或控件。
setEndPoint 把當前TextRange對象的開始點和結(jié)束點對齊到指定的TextRange對象的開始點和結(jié)束點。

[1]定位父元素(offsetParent):定位父元素并非是DOM層次結(jié)構(gòu)中的parentElement,而是離該元素最近的一個position屬性為relative、absolute、static的上層級元素。如果上層級元素中沒有這樣的元素,則定位父元素就是document.body。

HTML代碼示例1:

這個示例演示了一個在document中取得選中內(nèi)容的跨瀏覽器解決方案。

HTML
    


    Select some text or , or do not select anything, before you click on the button below.
    

HTML代碼示例2:

這個跨瀏覽器解示例演示了如何用range對象刪除一個元素中的內(nèi)容:

HTML
    


    
The contents of the source element.


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85731.html

相關(guān)文章

  • TextRange對象參考2

    摘要:屬性屬性返回一個整型數(shù)值,指定綁定到當前對象的邊界矩形的高度,以像素為單位。和屬性能夠取得一個對象綁定的矩形的邊界。在這種情況下,這個值指定了對象左坐標位置,包括了滾動條以及??赡艿闹翟O置或者取得對象的文本內(nèi)容字符串。 屬性 boundingHeight屬性 返回一個整型數(shù)值,指定綁定到當前TextRange對象的邊界矩形的高度,以像素為單位。 boundingLeft、boun...

    jiekechoo 評論0 收藏0
  • TextRange對象參考3

    摘要:注意只有以上的版本中支持對象以及它的方法。對于對象,使用以及屬性可以取得邊界點以及屬性,以檢測一個是否是收縮的。返回值這個方法沒有返回值。要想得到一個對象的準確外形,可以使用方法。返回值整型數(shù),取得層次結(jié)構(gòu)中,兩個點的定位。 方法 collapse方法 把一個range對象的開始點移動到它的結(jié)束點,或者相反。 注意:只有Internet Explorer 9.0以上的版本中支持R...

    huangjinnan 評論0 收藏0
  • BOM Range對象文字內(nèi)容選中

    摘要:參數(shù)被選中的第一個字符的位置。對象什么是對象表示包含節(jié)點和部分文本節(jié)點的文檔片段。一切有關(guān)于戶文本選擇范圍的信息都歸對象掌管。用對象的方法取得。 最初是因為textarea賦值后,focus光標一直定位到第一個文字的bug,搜之,發(fā)現(xiàn)有這樣一個API:HTMLInputElement.setSelectionRange,可以設置一個input元素中的文本選中內(nèi)容的起始位置和結(jié)束位置。 ...

    isaced 評論0 收藏0
  • JS實現(xiàn)將圖片復制到剪貼板

    摘要:前言最近項目新增需求用戶能夠拖拽頁面上的圖片文件到文檔。在現(xiàn)有的拖拽事件所提供無法滿足需求的情況下,換一個思路走嘗試將圖片復制到剪貼板。只復制目標節(jié)點的子節(jié)點,對于標簽,如果不額外包裹一層父元素,無法實現(xiàn)圖片復制。 前言 最近項目新增需求:用戶能夠拖拽頁面上的圖片文件到word文檔。當操作瀏覽器里拖拽圖片至別的程序,在word文檔中展示出獲取到的只是圖片的url地址,而非預期的圖片文件...

    MageekChiu 評論0 收藏0
  • 【譯】ECMAScript文檔---序言及1-6章(下)

    摘要:除非在本規(guī)范中其它指定的文法產(chǎn)生式可選部分隱式地包含一個叫做的接收一個值為包含相關(guān)產(chǎn)生式的文法的終結(jié)符或者非終結(jié)符的參數(shù)靜態(tài)語義規(guī)則的定義。 5.2 算法約定(Algorithm Conventions) ??規(guī)范常常使用一個帶編號的列表來顯示算法中的步驟。這個小算法被用作準確地表達ECMAScript語言構(gòu)造需要的語義。這些算法并不是打算暗示任何具體實現(xiàn)的使用。事實上,這里也許有更高...

    xiaokai 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<