JS Range 對象的使用



一:什麼是Range對象html

Range是指html文檔中的區域,如用戶用鼠標拖動選中的區域,以下圖:node

clipboard.png

經過Range對象,能夠獲取用戶選中的區域,或者指定選中區域,獲得Range的起點和終點、修改或者複製裏邊的文本,甚至是html。在富文本編輯器開發中,常常會使用到這些功能。瀏覽器

二:獲取當前的選區app

因爲兼容性的問題,須要區分ie瀏覽器,編輯器

var selection, range;
if (window.getSelection) { 
    //現代瀏覽器
    selection = window.getSelection();
} else if (document.selection) { 
    //IE
    selection = document.selection.createRange();
}

//Range對象
range = selection.getRangeAt(0);

三:range屬性spa

> collapsed     若是範圍的開始點和結束點在文檔的同一位置,則爲 true,即範圍是空的,或摺疊的。
> commonAncestorContainer     範圍的開始點和結束點的(即它們的祖先節點)、嵌套最深的 Document 節點。
> endContainer         包含範圍的結束點的 Document 節點。 
> endOffset     endContainer 中的結束點位置。
> startContainer     包含範圍的開始點的 Document 節點。
> startOffset    startContainer中的開始點位置。

四:range操做code

//選中區域的文字
var text = range.toString();

//選中區域的Element元素
var elem = range.commonAncestorContainer;
if(elem.nodeType != 1){
     elem = elem.parentNode;
}

//選中區域的html
var span = document.createElement('SPAN');
span.appendChild(range.cloneContents());

//選區是否爲空
var isSelectionEmpty = false;
if (range.startContainer === range.endContainer) {
   if (range.startOffset === range.endOffset) {
       isSelectionEmpty = true;
   }
}
相關文章
相關標籤/搜索