亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Selection與Range 對象操作示例指南

 更新時間:2022年09月01日 09:59:24   作者:yangcrazy30  
這篇文章主要為大家介紹了Selection與Range 對象操作示例指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

有些時候我們需要能夠通過JavaScript訪問頁面的當前選擇,已達成選擇(取消選擇)部分節(jié)點以從文檔中刪除所選內容或像文檔中插入某些新內容。我們需要RangeSelction對象已達成我們的目的。

Range

選擇的基本概念是Range,其本質是一對‘邊界點’:范圍起點和范圍終點

我們可以通過Range對象來操作選擇

    // 可以不傳任何參數(shù)創(chuàng)建Range對象
    let range = new Range()
    
    // 可以通過設置開始和結束邊界點來進行選擇
    // 指定開始點
    range.setStart(node, offset)
    // 指定最大范圍但不包括offset
    range.setEnd(node, offset)

選擇部分文本

setStartsetEnd方法的第一個參數(shù)node可以是文本節(jié)點也可以是元素節(jié)點

node是文本節(jié)點時,offset則必須是其文本中的位置

<p id="p">Hello</p> 
<script> 
let range = new Range(); 
range.setStart(p.firstChild, 2); 
range.setEnd(p.firstChild, 4); 
</script>

選擇dom元素節(jié)點

node是元素節(jié)點時,offset則必須是子元素的索引編號

當我們有如下dom結構并且以p為node節(jié)點時,對應的offset如圖所示

<p>Test: <i>test1</i> and <b>test2</b> </p>
   | 0   |   1      | 2  |     3     |

range對象屬性

我們在上面的示例中創(chuàng)建的 range 對象具有以下屬性:

startContainer,startOffset —— 起始節(jié)點和偏移量,

endContainer,endOffset —— 結束節(jié)點和偏移量,

collapsed —— 布爾值,如果范圍在同一點上開始和結束(所以范圍內沒有內容)則為 true,

commonAncestorContainer —— 在范圍內的所有節(jié)點中最近的共同祖先節(jié)點,

編輯范圍的方法

deleteContents() —— 從文檔中刪除范圍中的內容

extractContents() —— 從文檔中刪除范圍中的內容,并將刪除的內容作為 DocumentFragment 返回

cloneContents() —— 復制范圍中的內容,并將復制的內容作為 DocumentFragment 返回

insertNode(node) —— 在范圍的起始處將 node 插入文檔

surroundContents(node) —— 使用 node 將所選范圍中的內容包裹起來。要使此操作有效,則該范圍必須包含其中所有元素的開始和結束標簽:不能像 <i>abc 這樣的部分范圍。

更多API

更多API及詳細參數(shù)見 MDN Range

Selection

Range是用來管理選擇范圍的通用對象,但是新建一個Range對象并不一定會在文檔上創(chuàng)建一個選擇。 Selection對象是用來獲取文檔選擇的。可以通過winodw.getSelection()document.getSelection()來獲取。一個選擇可以包括零個或多個范圍,但實際上除firefox允許同時選擇多個范圍,其他瀏覽器最多只能選擇一個范圍。

selection的屬性

如前所述,理論上一個選擇可能包含多個范圍。我們可以使用下面這個方法獲取這些范圍對象:

getRangeAt(i) —— 獲取第 i 個范圍,i 從 0 開始。在除 Firefox 之外的所有瀏覽器中,僅使用 0

與范圍類似,選擇的起點被稱為“錨點(anchor)”,終點被稱為“焦點(focus)”。

主要的選擇屬性有:

anchorNode —— 選擇的起始節(jié)點,

anchorOffset —— 選擇開始的 anchorNode 中的偏移量,

focusNode —— 選擇的結束節(jié)點,

focusOffset —— 選擇開始處 focusNode 的偏移量,

isCollapsed —— 如果未選擇任何內容(空范圍)或不存在,則為 true 。

rangeCount —— 選擇中的范圍數(shù),除 Firefox 外,其他瀏覽器最多為 1。

selection錨點和焦點與range開始結束點的區(qū)別

selection的錨點可在選擇的焦點之后,以表達從右向左選擇,而range的開始點必須在結束點之前

selection API

更多詳細API及其參數(shù)見 MDN Selection

以上就是Selection與Range 對象操作示例指南的詳細內容,更多關于Selection Range 對象操作的資料請關注腳本之家其它相關文章!

相關文章

最新評論