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