HTML5 编辑 API 之 Range 对象(二)

cloneRange:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8">
    <title>range对象中的cloneRange方法</title>
</head>
<body>
    <!-- 复制当前的range -->
    <script type="text/javascript">
        function cloneRange(){
        var rangeObj = document.createRange();
        rangeObj.selectNodeContents(document.getElementById("p"));
        var rangeClone = rangeObj.cloneRange();
            alert(rangeClone.toString());
        }
    </script>
    
    <p id="p">这是一段文字,用来测试</p>
    <button onclick="cloneRange()">点击</button>

</body>
</html>

cloneContents:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8">
    <title>range对象中的cloneContents方法</title>
</head>
<body>
    <!-- 用于追加html代码,并且将range对象所代表的区域中的html代码追加到html代码之后。 -->
    <script type="text/javascript">
        function cloneContent(){
            var div = document.getElementById('id');
            var rangeObj = document.createRange();
            rangeObj.selectNodeContents(div);
            var docFrangMent = rangeObj.cloneContents();
            div.appendChild(docFrangMent);
        }
    </script>
    
    <div id="id">
        今天天气真的好
        <br/>
        <button onclick="cloneContent()">克隆</button>
        <br/>
    </div>

</body>
</html>

extratContents:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8">
    <title>range对象中的extratContents方法</title>
</head>
<body>
    
    <script type="text/javascript">
        function moveContent(){
            var srcDiv = document.getElementById('srcDiv');
            var distDiv = document.getElementById('distDiv');
            var rangeObj = document.createRange();
            rangeObj.selectNodeContents(srcDiv);
            var docFragment = rangeObj.extractContents();
            distDiv.appendChild(docFragment);
        }
        
    </script>
    
    <div id="srcDiv" style="background-color:green; width:300px;height:50px">How are you</div>
    <div id="distDiv" style="background-color:red; width:300px;height:50px"></div>
    <button onclick="moveContent()">移动</button>
    

</body>
</html>

compareBoundaryPoints:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8">
    <title>range对象中的compareBoundaryPoints方法</title>
</head>
<body>
    <script type="text/javascript">
        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>

    这是一段<b id="boldTest">用来</b>测试的文字,测试结果
    <br/>
    <button onclick="testPlace()">位置比较</button>
</body>
</html>

insertNode:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8">
    <title>range对象中的insertNode方法</title>
</head>
<body>
    <script type="text/javascript">
        function moveButton(){
            var btn = document.getElementById('button');
            var selection = document.getSelection();
            if(selection.rangeCount>0){
                var range = selection.getRangeAt(0);
                range.insertNode(btn);
            }
        }

    </script>
    <div onmouseup="moveButton()" style="background-color:bisque;width:400px">这是一段测试文字这是一段测试文字这是一段测试文字</div>
    <button id="button">点击</button>
    
</body>
</html>

collapse:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8">
    <title>range对象中的collapse方法</title>
</head>
<body>
    <script type="text/javascript">
        var rangeObj = document.createRange();
        function selectRangeContents(){
            var div = document.getElementById('div');
            rangeObj.selectNode(div);
        }
        function unselect(){
            rangeObj.collapse(false);
        }
        function showRange(){
            alert(rangeObj.toString());
        }
    </script>
    <div id="div" style="background-color:bisque;width:300px;height:50px">现在是下午三点四十五分</div>
    <button onclick="selectRangeContents()">选择元素</button>
    <button onclick="unselect()">取消选择元素</button>
    <button onclick="showRange()">显示range内容</button>
</body>
</html>

 

posted @ 2016-05-05 19:18  Bob-yu  阅读(155)  评论(0编辑  收藏  举报