📄 editor.js
字号:
var oSelection = _this.iframe.contentWindow.getSelection();
}
else {
var oSelection = _this.iframe.contentWindow.document.selection.createRange();
}
var sRangeType = _this.getElement();
if (sRangeType.tagName.toLowerCase() == "img"){
if(Act == "left") {
sRangeType.style.margin = "4px";
sRangeType.style.float = "left";
sRangeType.style.display = "";
sRangeType.style.textAlign = "";
}
if(Act == "center") {
sRangeType.style.margin = "4px auto";
sRangeType.style.display = "block";
sRangeType.style.float = "";
sRangeType.style.textAlign = "center";
sRangeType.setAttribute("align", "");
}
if(Act == "right") {
sRangeType.style.margin = "4px";
sRangeType.style.float = "right";
sRangeType.style.display = "";
sRangeType.style.textAlign = "";
}
_this.iframe.contentWindow.document.body.innerHTML = _this.iframe.contentWindow.document.body.innerHTML;
}
else {
alert("请选中图片后操作!");
}
}
function swapMode(event, Act) {
if(Act == "code") {
$("editor_body_textarea").style.display = "";
$("editor_body_area").style.display = "none";
$("editor_body_textarea").value = _this.iframe.contentWindow.document.body.innerHTML;
$("EDiaryEditorToolBarMask").style.display = "";
var info = _this.config.toolbarinfo;
for(var key in info) {
$("EDiaryEditor" + info[key]["n"]).className = "EDiaryEditorDisable";
}
$("EDiaryEditorFontFamilyMenu").className = "EDiaryEditorDisable";
$("EDiaryEditorFontSizeMenu").className = "EDiaryEditorDisable";
$("EDiaryEditorFontStyleMenu").className = "EDiaryEditorDisable";
$("ModeCheck").checked = true;
}
else {
$("editor_body_textarea").style.display = "none";
$("editor_body_area").style.display = "";
_this.iframe.contentWindow.document.body.innerHTML = $("editor_body_textarea").value;
$("EDiaryEditorToolBarMask").style.display = "none";
var info = _this.config.toolbarinfo;
for(var key in info) {
$("EDiaryEditor" + info[key]["n"]).className = "";
}
$("EDiaryEditorFontFamilyMenu").className = "";
$("EDiaryEditorFontSizeMenu").className = "";
$("EDiaryEditorFontStyleMenu").className = "";
$("ModeCheck").checked = false;
}
}
_this.swapMode = swapMode;
$("ModeCheck").onclick = function (event) {
event = event || window.event;
if(this.checked == true)swapMode(event, "code");
else swapMode(event, "design");
}
var _imgArr = {};
var node;
for(var key in this.config.node) {
node = this.config.node[key];
_imgArr[key] = new Image;
_imgArr[key].src = "images/editor/" + key + ".gif";
_imgArr[key + "_over"] = new Image;
_imgArr[key + "_over"].src = "images/editor/" + key + "_over.gif";
node.src = _imgArr[key].src;
node.bname = key;
node.onmouseover = function () {
this.src = _imgArr[this.bname + "_over"].src;
}
node.onmouseout = function () {
this.src = _imgArr[this.bname].src;
}
node.onclick = function () {
_this.runCMD(this.bname);
}
}
$("EDiaryEditorface").onclick = $("EDiaryEditorhilitecolor").onclick = $("EDiaryEditorforecolor").onclick = $("EDiaryEditorjustifyformat").onclick = $("EDiaryEditorFontStyleMenu").onclick = $("EDiaryEditorFontSizeMenu").onclick = $("EDiaryEditorFontFamilyMenu").onclick = function (event) {
FontMenuFuncHash.click(event, FontMenuFuncHash);
event = event || window.event;
if(window._isIE){
event.cancelBubble = true;
}
else {
event.stopPropagation();
}
}
$("EDiaryEditorIMGLeft").onmouseup = function (event) {
formatIMG(event, "left");
}
$("EDiaryEditorIMGCenter").onmouseup = function (event) {
formatIMG(event, "center");
}
$("EDiaryEditorIMGRight").onmouseup = function (event) {
formatIMG(event, "right");
}
$("EDiaryEditorimg").onclick = function (event) {
viewDialog(event, "img");
}
$("EDiaryEditorlink").onclick = function (event) {
viewDialog(event, "link");
}
$("EDiaryEditortable").onclick = function (event) {
viewDialog(event, "table");
}
$("EDiaryEditorattach").onclick = function (event) {
viewDialog(event, "attach");
}
var _iframeHTML = "\
<html>\
<head>\
<style>\
body {\
background: #ffffff;\
margin: 0px;\
padding: 8px 5px 2px 12px;\
font-size: 12px;\
overflow: auto;\
scrollbar-face-color: #fff;\
scrollbar-highlight-color: #c1c1bb;\
scrollbar-shadow-color: #c1c1bb;\
scrollbar-3dlight-color: #ebebe4;\
scrollbar-arrow-color: #cacab7;\
scrollbar-track-color: #f4f4f0;\
scrollbar-darkshadow-color: #ebebe4;\
word-wrap: break-word;\
font-family: '宋体', 'Courier New';\
}\
p {\
margin: 0px;\
}\
li, div, span , p {\
line-height:1.5;\
}\
v\\:* {\
behavior: url(#default#VML);\
}\
</style>\
</head>\
<body>" + (sContent ? sContent : "") + "</body>\
</html>";
_this.iframe.contentWindow.document.open();
_this.iframe.contentWindow.document.write(_iframeHTML);
_this.iframe.contentWindow.document.close();
if(window._isIE){
_this.iframe.contentWindow.document.body.contentEditable = true;
}else{
_this.iframe.contentWindow.document.designMode = "on";
}
this.cacheIframe = document.createElement("iframe");
this.cacheIframe.style.visibility = "hidden";
this.cacheIframe.style.height = "0";
document.body.appendChild(this.cacheIframe);
_this.iframeWindow = _this.iframe.contentWindow;
_this.iframeDocument = _this.iframeWindow.document;
// 初始化IFRAME中的事件
this.iframeEventCore.init(this);
_this.iframe.contentWindow.document.onclick = document.onclick = function (event) {
event = event || window.event;
FontMenuFuncHash.hide(event, FontMenuFuncHash);
}
// zly, moz 下点击编辑区清除菜单无效, try 解决单纯判断浏览器引起的误差。
try{
_this.iframe.contentWindow.document.addEventListener('click', function (event) {
event = event || window.event;
FontMenuFuncHash.hide(event, FontMenuFuncHash);
},true);
}catch(e){};
setTimeout(function () {
_this.iframe.contentWindow.document.body.onpaste = function (event) {
var clearFromWord = function(html) {
// for Word2000+
html = html.replace(/<\/?SPAN[^>]*>/gi, "" );
html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
html = html.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3");
html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
html = html.replace(/<\\?\?xml[^>]*>/gi, "");
html = html.replace(/<\/?\w+:[^>]*>/gi, "");
// for Word2000
html = html.replace(/<img+.[^>]*>/gi, "");
return html;
};
if(window._isIE) {
var pasteData = function () {
var tif = _this.cacheIframe
document.body.appendChild(tif);
tlf = tif.contentWindow.document;
tlf.body.innerHTML = "";
tlf.body.createTextRange().execCommand("Paste");
var html = tlf.body.innerHTML;
var len = html.indexOf(" ");
if(len == 0) html = html.replace(/\ /i, "");
var htmlData = html;
tlf.body.innerHTML = "";
return htmlData;
}
pasteData = pasteData();
if(pasteData && pasteData.length > 0) {
var wordPattern = /<\w[^>]* class="?MsoNormal"?/gi;
if(wordPattern.test(pasteData)) {
if(confirm("文章有多余代码,可能影响顺利发表,是否确认清除?\r\n\r\n提示:您的文字将完整保留。")) {
pasteData = clearFromWord(pasteData);
}
else {
pasteData = pasteData.replace(/<img+.[^>]*>/gi, "");
pasteData = pasteData.replace(/<\/?\w+:imagedata[^>]*>/gi, "");
pasteData = pasteData.replace(/<\/?\w+:shape[^>]*>/gi, "");
}
}
var oRTE = _this.iframe.contentWindow;
var oRng = oRTE.document.selection.createRange();
oRng.pasteHTML(pasteData);
}
return false;
}
return false;
}
}, 500);
$("EDiaryEditorview").onclick = function () {
$("editor_body_textarea").value = _this.iframe.contentWindow.document.body.innerHTML;
article_preview();
}
if(window._isIE)setTimeout(this.EDiaryEditorRsave, 500);
},
iframeEventCore: {
init: function (_this) {
var tthis = this;
_this.iframe.contentWindow.document.onmousedown = function () {
tthis.mousedown(_this.iframe.contentWindow.event, _this);
}
_this.iframe.contentWindow.document.onkeyup = function () {
tthis.keyup(_this.iframe.contentWindow.event, _this);
}
//定时自动调整图片大小
setInterval(function () {
tthis.imgsize(_this);
}, 1000);
},
keyup: function (event, _this) {
},
imgsize: function (_this) {
var o = _this.iframe.contentWindow.document.getElementsByTagName("img");
var w, h;
for(var i = 0; i < o.length; i ++) {
w = o[i].width;
h = o[i].height;
if(w > 500) {
o[i].style.width = 500;
o[i].style.height = Math.floor(o[i].width * (h / w));
}
}
},
mousedown: function (el, _this) {
var tthis = this;
var event = window.event || el;
var esrc = event.srcElement || event.target;
if(esrc.tagName.toLowerCase() == "img") {
this.img = esrc;
this.w = this.t_w = this.img.offsetWidth;
this.h = this.t_h = this.img.offsetHeight;
this.resizeEnd = false;
this.img.onresize = function () {
tthis.img = this;
tthis.resize(event, _this);
}
}
},
resize: function (event, _this) {
var tthis = this;
if((this.t_w != this.img.offsetWidth || this.t_h != this.img.offsetHeight) && this.resizeEnd == false) {
setTimeout(function () {
tthis.timeout(tthis);
}, 10);
this.resizeEnd = true;
this.img.onresize = null;
}
},
timeout: function (_this) {
if(Math.abs(_this.t_w - _this.img.offsetWidth) > 0) {
_this.img.style.height = Math.floor(_this.img.offsetWidth * (_this.h / _this.w));
}
if(Math.abs(_this.t_h - _this.img.offsetHeight) > 0) {
_this.img.style.width = Math.floor(_this.img.offsetHeight * (_this.w / _this.h));
}
_this.t_w = _this.img.offsetWidth;
_this.t_h = _this.img.offsetHeight;
}
},
runCMD: function (CMD, sValue) {
var _this = this;
if(CMD == "" || CMD == null)return;
else if(CMD == "ParaFormatting") {
var oBody = _this.iframe.contentWindow.document.body;
var oChild = oBody.childNodes;
for(var i = 0; i < oChild.length; i++){
if(oChild[i].tagName){
// 去掉首尾空格
oChild[i].innerHTML = oChild[i].innerHTML.split(' ').join('
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -