Iframe选区
--------------------------------
直接使用 document.creatRange() 來創建一個選區;
默認是空的;
使用selectNode(obj)來代替moveToElementText();
反白依賴新對象 winodw.getSeletion();
有rangeCount計數屬性;
有removeAllRange()方法;
這個對象有一個 addRange(rangeObj) 方法來取代 IE 中的 select()
截取文本串
setStart(文本節點,偏移量)
setEnd(文本節點,偏移量)
::在 IE 中是moveStart(單位,偏移量) 針對已有焦點區
::FF 中是以兩個文本節點的跨度來生成焦點區
有時候錨取的文本將是跨節點的,系統自動生成一個fragment來維持html良好格式,
錨取內容后,可以對內容進行一些操作:
deleteContents();刪除
cloneContents();克隆
extractContents();抽取
2級DOM定義了一個createRange()方法,如果是按照DOM此標準的瀏覽器(IE并不是支持此標準的,但是IE里的屬性或方法卻遠比標準中定義的多得多),它屬于document對象,所以創建一個range對象要這樣做:
var oRange = document.createRange();??
如果你要檢測你的瀏覽器是否支持此標準Range對象,可以用hasFeature()方法來檢測: var supportsDOMRanges = document.implementation.hasFeature("Range", "2.0");???
if (supportsDOMRange) {???
var oRange = document.createRange();???
//range code here???
}
---------------------------------------------------------
最簡單用Range進行選擇,用selectNode()或者selectNodeContents()方法,這兩個方法只有一個接收參數,一個DOM節點。
selectNode()方法選擇全部節點,包括它的孩子,而selectNodeContents()選擇的節點只是它的孩子。
----------------------------------------------------
當你創建了一個Range對象時,Range實例就會有以下的屬性:
startContainer — 返回range對象從何開始的節點對象(父節點的第一個節點)
startOffset — 返回Range開始的偏移量(offset),如果startContainer是一個文本節點,注釋節點,或者是CDATA節點,這個屬性返回文本的偏移量,否則返回第一個節點的索引。
endCOntainer — 返回Range對象最后一個節點對象(父節點的最后一個節點)
endOffset — 返回Range結束時的偏移量(offset)特性與startOffset相同。
commonAncestorContainer — 返回第一個包含該Range對象的節點。
---------------------------------------
Range中還有一些其它的方法:
setStartBefore(node) — 以特定節點為參照確定起始錨點
setStartAfter(node) — 同上
setEndBefore — 以特定節點為參照確定終結錨點
setEndAfter — 同上
------------------------------
surroundContents(node) 進行封裝 tag 完成格式化焦點文本的任務
insertNode(node) 插入節點,完成添加文本的任務
轉載于:https://www.cnblogs.com/jazzka702/archive/2009/07/26/1531240.html
總結
- 上一篇: Silverlight2 边学边练 之三
- 下一篇: 说出你的个人知识问题!