javascript之DOM技术(二)
2010-09-14 13:06:48 来源:WEB开发网(4)复杂选区
通过setStart和setEnd来实现复杂选区,两个方法都接受两个参数:节点引用和偏移量。
(5)与范围对象的交互
<1>deleteContents(),删除范围内容
<2>extractContents,与deleteContents()相似,只不过返回被删除的文档碎片
<3>cloneContents(),创建范围内容副本
<4>surroundContents(node),插入包围范围的内容
<5>insertNode(node),在选区开头插入节点
<6>cloneRange(),复制范围
<7>detach(),释放系统资源
<8>compareBoundaryPoints()方法,比较范围,两个参数,一个比较规则(Range.START_START,Range.START_TO_END,Range.END_TO_START,Range.END_TO_END),一个是比较的范围引用
2.IE中的范围
IE的范围并不标准,主要用来处理文本节点,调用<body/>,<button/>,<input/>,<textarea>节点的createTextRange方法来创建范围,建议用document.body.createTextRange()来创建,因为其他元素创建的范围仅能用于它们内部。
(1)简单选区:
同样以下面这段代码为例子:
<p id="p1"><b>hello</b>world</p>
要选择hello,可以使用:
var oRange=document.body.createTextRange();
oRange.findText("hello");
findText方法还可以接受第2个参数,如oRange.findText("hello",1);将选择hello之后再次找到的hello文本节点。
与DOM中的selectNode方法最相似的是IE的moveToElementText()方法,比如我们要选中p1节点以及它的所有子节点:
var oRange=document.body.createTextRange();
var oP1=document.getElementById("p1');
oRange.moveToElementText(oP1);
alert(oP1.htmlText);
另外,oRange.parentElement()返回选区的父节点。
(2)复杂选区:
move(),moveStart(),moveEnd(),expand()方法实现复杂选区,这些方法都接受两个参数:移动的单位("character","word","sentence","textedit")和移动的单位的个数。
(3)与范围交互
<1>text属性,比如oRange.text="hello";
<2>pasteHTML(),插入HTMl代码,比如oRange.pasteHTML("<em>test</em>");
<3>duplicate(),复制范围
<4>compareEndPoints() 方法,比较范围,第一个参数也是比较规则("StartToStart","StartToEnd,EndToStart","EndToEnd")和比较的范围引用。也可以通过isEqual()和isRange()方法来比较。
3.范围的常见应用,比如搜索引擎中,搜索出来的链接中的关键字用特别的颜色包围起来,另外就是网页广告比较常用。
来源:http://www.blogjava.net/killme2008/archive/2007/02/10/99135.html
Tags:javascript DOM 技术
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接