HTML5——Range对象(2)
2016-05-04 09:43
671 查看
1、cloneRange、cloneContents、extractContents方法
<body>
<p id="p">这里是随便书写的内容</p>
<button onclick="cloneRange()">克隆</button>
</body>
<script>
function cloneRange() {
var rangeObj = document.createRange();
rangeObj.selectNodeContents(document.getElementById("p"));
var rangeClone = rangeObj.cloneRange();
alert(rangeClone.toString());
}
</script>
cloneRange方法复制该范围(Range)。
<body>
<div id="div">
你好吗?
<br>
<button onclick="cloneContent()">克隆</button>
<br>
</div>
</body>
<script>
function cloneContent() {
var div = document.getElementById("div");
var rangeObj = document.createRange();
rangeObj.selectNodeContents(div);
var docFrangMent = rangeObj.cloneContents();
div.appendChild(docFrangMent);
}
</script>
cloneContents方法会克隆range的整个文档节点,返回一个DocumentFragment(文档碎片节点)。
cloneContents方法把范围(Range)的内容复制到一个DocumentFragment对象。
<body>
<div id="srcDiv" style="background-color:aquamarine;width:300px;height:50px;">你好吗?</div>
<div id="distDiv" style="background-color:bisque;width:300px;height:50px"></div>
<button onclick="moveContent()">移动元素</button>
</body>
<script>
function moveContent() {
var srcDiv = document.getElementById("srcDiv");
var distDiv = document.getElementById("distDiv");
var rangeObj = document.createRange();
rangeObj.selectNodeContents(srcDiv);
var docFrangMent = rangeObj.extractContents();
distDiv.appendChild(docFrangMent);
}
</script>
extractContents方法删除文档内容,并以DocumentFragment对象的形式返回它。即返回一个DocumentFragment节点。
如上例,extractContents方法会获取srcDiv中的所有内容。
2、insertNode方法、compareBoundaryPoints方法
insertNode方法,在范围(Range)的开头插入一个节点。<body>
<div onmouseup="moveButton()" style="width:400px;background-color:bisque">
这里是随便写的文字。
</div>
<button id="button">按钮</button>
</body>
<script>
function moveButton() {
var btn = document.getElementById("button");
var selection = document.getSelection();
if(selection.rangeCount >0){
var range = selection.getRangeAt(0);
range.insertNode(btn);
}
}
</script>
点击文字区域的时候,会将按钮移动到文字区域中。
compareBoundaryPoints(how, sourceRange)方法
Range.START_TO_START - 比较两个 Range 节点的开始点
Range.END_TO_END - 比较两个 Range 节点的结束点
Range.STARTTO_END - 用 _sourceRange 的开始点与当前范围的结束点比较
Range.ENDTO_START - 用 _sourceRange 的结束点与当前范围的开始点比较
<body>
这是一段文字,我也不<b id="boldTest">知道</b>写写什么。随便吧。
<br>
<button onclick="testPlace()">位置比较</button>
</body>
<script>
function testPlace() {
var boldText = document.getElementById("boldTest");
var boldRange = document.createRange();
boldRange.selectNodeContents(boldText.firstChild);
var selection = document.getSelection();
if(selection.rangeCount>0){
var selRange = selection.getRangeAt(0);
if(selRange.compareBoundaryPoints(Range.START_TO_END,boldRange)<0){
alert("选取的文字在粗体前面");
}else{
if(selRange.compareBoundaryPoints(Range.END_TO_START,boldRange)>0){
alert("选取的文字在粗体后面");
}
}
}
}
</script>
4、collapse方法与detach方法
collapse()方法是范围的边界点重合。collapse(toStart)
参数toStart设置为true,该方法将把范围的结束点设置为与开始点相同的值。否则,它将把范围的开始的设置为与结束点相同的值。
detach方法,释放点Range对象。
相关文章推荐
- HTML5——Range对象(1)
- HTML5 Canvas绘制五星红旗
- HTML5 语义元素
- HTML5设计网页动态条幅广告(Banner) 已经加上完整源代码
- HTML5----响应式(自适应)网页设计
- html5实现 input必须为手机号且非空的验证方法
- html5引用公共头尾
- html5下让 height:100%; 起作用
- 移动h5自适应布局
- H5页面适配所有iPhone和安卓机型的六个技巧
- 字中字效果的实现【html5实例】
- Html5自学过程笔记
- Html5 添加class 浏览器不支持问题
- HTML5 Canvas游戏开发(三)lufylegend开源库件(上)
- 一款狂拽炫酷的编辑器插件Atom,H5小伙伴的福利
- HTML5的自定义属性data-* 的用法解析
- HTML5标签三
- 基于HTML5的有弹幕功能的视频播放器
- HTML5新标签
- html5 基本语法详解