扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
var ToolObj;
var ContentObj;
var RangArr = {}; //定义一个数组变量:用于存储选择范围:rangvar Extend = function (destination, source) {
for (var item in source) {
destination[item]= source[item];
}
return destination;
}
var EventUtil = function (element, type, hander) {
if (element.addEventListener) {
element.addEventListener(type, hander,false);
}else if (element.attachEvent) {
element.attachEvent("on" + type, hander);
}else {
element["on" + type] = null;
}
}
var DO = function (id) {
return typeof id == "string" ? document.getElementById(id) : undefined;
}
Object.prototype._addClass= function (_className) {
this.className = this.className + " " + _className;
}
Object.prototype._removeClass= function (_className) {
this.className = this.className.toString().replace(_className, "");
};
//编辑器方法var T = {
B:function () { T.Excmd("bold"); },
U:function () { T.Excmd("underline"); },
I:function () { T.Excmd("Italic"); },
FS:function () {
var cmdValue = DO("selFontSize").value;
T.ExcmdFont("FontSize", cmdValue);
},
Excmd:function (cmdName) {
ContentObj.focus();
if (rangy.getSelection().toString() == "") { T.GetRange(); }
document.execCommand(cmdName);
T.SetStyle();
},
ExcmdFont:function (cmdName, cmdValue) {
ContentObj.focus();
if (rangy.getSelection().toString() == "") { T.GetRange(); }
document.execCommand(cmdName,false, cmdValue);
T.SetStyle();
},
InsertHTML:function (_html) {
ContentObj.focus();
T.GetRange();
var sel = rangy.getSelection();
if (sel && sel.getRangeAt && sel.rangeCount) {
var range = sel.getRangeAt(0);
var 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();
};
},
SaveRange:function () {
var sel = rangy.getSelection();
if (sel && sel.getRangeAt && sel.rangeCount) {
RangArr["r_1"] = sel.getRangeAt(0);
}
else {
RangArr["r_1"] = null;
}
},
GetRange:function () {
var sel = rangy.getSelection();
if (sel && sel.getRangeAt && sel.rangeCount) {
var range = RangArr["r_1"];
if (range) {
sel.removeAllRanges();
sel.addRange(range);
}
}
},
SetStyle: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"); }
}
};
var ToolOne = function (options) {
this.SetOptions(options);
ToolObj= DO(this.options.toolId); //工具条对象 ContentObj = DO(this.options.cotentId);//编辑框对象 this.init();
this.BindToolHTML();
}
ToolOne.prototype= {
init:function () {
EventUtil(ContentObj,"click", function () { T.SaveRange(); T.SetStyle(); });
EventUtil(ContentObj,"keyup", function () { T.SaveRange(); T.SetStyle(); });
ToolObj._addClass("editTool");
ContentObj._addClass("bc editContent");
ContentObj.setAttribute("contenteditable", "true");
},
SetOptions:function (_options) {
this.options = {
toolId:"",
cotentId:"",
item: ["bold", "underline", "italic", "inserHTML", "fontsize"]
};
Extend(this.options, _options || {});
},
BindToolHTML:function () {
var _tooHtml = new Array();
_tooHtml.push('bold|B');
_tooHtml.push('underline| U');
_tooHtml.push('italic| I');
_tooHtml.push('inserhtml| +');
_tooHtml.push('fontsize|'
+ '');
for (var i = 0; i < this.options.item.length; i++) {
ToolObj.innerHTML+= this.GetTooName(this.options.item[i], _tooHtml);
}
},
GetTooName:function (funName, _tooHtml) {
for (var i = 0; i < _tooHtml.length; i++) {
var val = _tooHtml[i].split('|')[0];
funName= funName.toLowerCase();
val= val.toLowerCase();
if (val == funName) {
return _tooHtml[i].split('|')[1];
}
}
return "";
}
}ToolOne.js.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;}
EditBase.css
文章名称:编辑器002-创新互联
转载来于:http://kswjz.com/article/echsp.html
扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流