编辑器001

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <link href="EditBase.css" rel="stylesheet" type="text/css" />
    <style>
    .bc_blue { border: solid 1px blue; }
.bc { border: solid 1px #2C3D5B; }
.fontbold{font-weight:bold;}
.w80{width:80px}
.w100 { width: 100px;  }
.w200 { width: 200px;  }
.w600 { width: 600px;  }
.h300 { height: 100px; }
.edti{border:solid 1px #ccc;width:700px;}
.editContent{ background-color:White;padding:10px;word-wrap:break-word;height: auto; min-height: 200px;padding-top:15px;}
.editTool{width:100%;height:26px;background-color:#D7E4F2;margin:0px;}
.editTool div{ float:left;padding:3px 9px 3px 9px; cursor:pointer;text-decoration:none;color:Black }
.editTool  .curr{background-color:#81AAD1;}

    </style>
</head>
<body>
    <div class="edti">
        <div class="editTool">
            <div id="bold" class="fontbold" onclick='DivEdit.setBold()' title="加粗">
                B
            </div>
            <div id="Underline" class="fontbold" onclick='DivEdit.setUnderline()' title="下划线">
                <u>U</u></div>
            <div id="Italic" class="fontbold" onclick='DivEdit.setLtalic()' title="斜体">
                <i>I</i></div>
            <div id="Insert1" class="fontbold" onclick="DivEdit.insertText('插入的值')" title="插入的值">
                +
            </div>
            <div>
                <select id="fontSize" onchange="DivEdit.setFontSize()">
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <option value="4">4</option>
                    <option value="5">5</option>
                    <option value="6">6</option>
                    <option value="7">7</option>
                </select></div>
            <div>
                <select id="ForeColor" onchange="DivEdit.setForeColor()">
                    <option value="0">字体颜色</option>
                    <option value="#ED0D08"></option>
                    <option value="#000000">黑色</option>
                </select></div>
            <div>
                <select id="backColor">
                    <option value="0">背景颜色</option>
                </select></div>
        </div>
        <div id="divCon" onclick="DivEdit.setEditObj('divCon');" class="bc  editContent"
            contenteditable="true">
        </div>
    </div>
</body>
</html>
<script src="https://files.cnblogs.com/wzq806341010/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="https://files.cnblogs.com/wzq806341010/rangy-core.js" type="text/javascript"></script>
<script type="text/javascript">
    var editObj = document.getElementById('divCon');
    var editId = 'divCon';
    var Caret = 0;
    var editorcurrentcaretset = {};
    editObj.onkeyup = function () {
        DivEdit.saveEditorCaretPos();
        DivEdit.setToolStyle();
    }
    var DivEdit = {
        setEditObj: function (eId) {
            editId = eId; editObj = document.getElementById(eId);
            DivEdit.saveEditorCaretPos(); DivEdit.setToolStyle();
        },
        setToolStyle: function () {
            $(".editTool div").removeClass("curr");
            if (document.queryCommandState("Bold")) { $("#bold").addClass("curr"); }
            if (document.queryCommandState("Underline")) { $("#Underline").addClass("curr"); }
            if (document.queryCommandState("Italic")) { $("#Italic").addClass("curr"); }
        },
        setCommand: function (command) {
            editObj.focus();
            if (rangy.getSelection().toString() == "") {
                DivEdit.getEditorCurrentCaret();
            }
            document.execCommand(command); DivEdit.setToolStyle();
        },
        setBold: function () {
            DivEdit.setCommand("Bold");
        },
        setUnderline: function () {
            DivEdit.setCommand("Underline");
        },
        setLtalic: function () {
            DivEdit.setCommand("Italic");
        },
        setFontSize: function () {
            editObj.focus();
            if (rangy.getSelection().toString() == "") {
                DivEdit.getEditorCurrentCaret();
            }
            var color = document.getElementById("fontSize").value;
            document.execCommand('FontSize', false, color)
        },
        setForeColor: function () {
            editObj.focus();
            if (rangy.getSelection().toString() == "") {
                DivEdit.getEditorCurrentCaret();
            }
            var size = document.getElementById("ForeColor").value;
            document.execCommand('ForeColor', false, size)
        },
        getEditorCurrentCaret: function () {
            var sel = rangy.getSelection();
            if (sel && sel.getRangeAt && sel.rangeCount) {
                var range = editorcurrentcaretset["c" + editId];
                if (range) {
                    sel.removeAllRanges();
                    sel.addRange(range);
                }
            }
        },
        saveEditorCaretPos: function () {
            var sel = rangy.getSelection();
            if (sel && sel.getRangeAt && sel.rangeCount) {
                editorcurrentcaretset["c" + editId] = sel.getRangeAt(0);
            }
            else {
                editorcurrentcaretset["c" + editId] = null;
            }
        },
        insertText: function (html) {
            editObj.focus();
            DivEdit.getEditorCurrentCaret();
            sel = rangy.getSelection(); //如果兼容性不好:换成rangy.getSelection()       //../js/rangy-core.js"
            if (sel && sel.getRangeAt && sel.rangeCount) {
                range = sel.getRangeAt(0);
                node = range.createContextualFragment(html); //根据指定的文本创建节点
                var lastNode = node.lastChild; //获得节点的最后一个字节点
                range.insertNode(node); //将节点插入到范围内开头
                range.setEndAfter(lastNode); //在指定的节点后结束范围
                range.collapse(false); //折叠:true光标到开始,false:光标到结束
                sel.removeAllRanges();
                sel.addRange(range);
                sel.collapseToEnd();
            }
        }
    }

        
  
</script>
001

 

 

posted on 2013-10-29 21:58  朝着  阅读(190)  评论(0编辑  收藏  举报