最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Selection與Range 對象操作示例指南

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

前言

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

Range

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

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

    // 可以不傳任何參數(shù)創(chuàng)建Range對象
    let range = new Range()
    
    // 可以通過設(shè)置開始和結(jié)束邊界點來進行選擇
    // 指定開始點
    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結(jié)構(gòu)并且以p為node節(jié)點時,對應(yīng)的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é)束節(jié)點和偏移量,

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

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

編輯范圍的方法

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

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

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

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

surroundContents(node) —— 使用 node 將所選范圍中的內(nèi)容包裹起來。要使此操作有效,則該范圍必須包含其中所有元素的開始和結(jié)束標簽:不能像 <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é)束節(jié)點,

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

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

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

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

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

selection API

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

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

相關(guān)文章

  • JS輕量級函數(shù)式編程實現(xiàn)XDM三

    JS輕量級函數(shù)式編程實現(xiàn)XDM三

    這篇文章主要為大家介紹了JS輕量級函數(shù)式編程實現(xiàn)XDM示例詳解第3/3篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 在網(wǎng)頁中控制wmplayer播放器

    在網(wǎng)頁中控制wmplayer播放器

    在網(wǎng)頁中控制wmplayer播放器...
    2006-07-07
  • js?websocket斷線重連實例代碼

    js?websocket斷線重連實例代碼

    這篇文章主要為大家介紹了js?websocket斷線重連實例代碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 微信小程序 彈幕功能簡單實例

    微信小程序 彈幕功能簡單實例

    這篇文章主要介紹了微信小程序 彈幕功能簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 微信小程序 Page()函數(shù)詳解

    微信小程序 Page()函數(shù)詳解

    這篇文章主要介紹了微信小程序 Page()函數(shù)詳解的相關(guān)資料,在開發(fā)過程中肯定會遇到Page()函數(shù),希望能幫助到大家,需要的朋友可以參考下
    2016-10-10
  • 微信小程序 實戰(zhàn)實例開發(fā)流程詳細介紹

    微信小程序 實戰(zhàn)實例開發(fā)流程詳細介紹

    這篇文章主要介紹了微信小程序 實戰(zhàn)實例開發(fā)流程詳細介紹的相關(guān)資料,這里主要介紹微信小程序的開發(fā)流程和簡單實例,需要的朋友可以參考下
    2017-01-01
  • 微信小程序request出現(xiàn)400的問題解決辦法

    微信小程序request出現(xiàn)400的問題解決辦法

    這篇文章主要介紹了微信小程序request出現(xiàn)400的問題解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • JavaScript實現(xiàn)一個Promise隊列小工具

    JavaScript實現(xiàn)一個Promise隊列小工具

    這篇文章主要介紹了JavaScript實現(xiàn)一個Promise隊列小工具,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 前端項目中監(jiān)聽localStorage的變化

    前端項目中監(jiān)聽localStorage的變化

    這篇文章主要為大家介紹了前端項目中監(jiān)聽localStorage的變化的解決思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 深入淺出探究JavaScript中的async與await

    深入淺出探究JavaScript中的async與await

    任意一個名稱都是有意義的,先從字面意思來理解。async 是“異步”的簡寫,而 await 可以認為是 async wait 的簡寫。所以應(yīng)該很好理解 async 用于申明一個 function 是異步的,而 await 用于等待一個異步方法執(zhí)行完成。下文將帶你深入探究JavaScript中的async與await
    2021-09-09

最新評論

凤冈县| 静海县| 余姚市| 泸州市| 呈贡县| 常山县| 定州市| 山阴县| 兴和县| 太谷县| 白朗县| 南阳市| 福清市| 龙胜| 毕节市| 江川县| 湖北省| 岳池县| 浏阳市| 黄骅市| 大方县| 甘南县| 喀喇沁旗| 扶风县| 来宾市| 灵石县| 沂源县| 宾川县| 淄博市| 天柱县| 通榆县| 阆中市| 大同市| 中牟县| 虹口区| 罗平县| 灵武市| 卓资县| 白山市| 宁阳县| 中西区|