📄 weiseditor.js
字号:
else
El = evt.target;
}
return El;
},
WEUserLanguage:function()
{
Editor.Config.lang = window.isIE?navigator.userLanguage:navigator.language;
},
Clearn:function()
{
if (!Editor.Config.WEditorMode) return;
Editor.Config.Document.body.innerHTML = "<br />";
Editor.Config.Select();
},
configNodeAround:function(Node,range)
{
if (!Node.nextSibling)
{
range.deleteContents();
var _br = Editor.Config.Document.createElement('BR');
range.insertNode(_br);
}
else
{
var flag = false;
var tnode = null;
tnode = Node.nextSibling;
while (tnode)
{
if (tnode.nodeType==1) {flag = true;break;}
else if (tnode.nodeType==3)
{
if(tnode.nodeValue.trim()!='')
{
flag = true;break;
}
}
tnode = tnode.nextSibling;
}
if (!flag) {
range.deleteContents();
var _br = Editor.Config.Document.createElement('BR');
range.collapse(false);
range.insertNode(_br);
}
}
},
execCMD:function(type,val)
{
if (val == null)
Editor.Config.Document.execCommand(type);
else
Editor.Config.Document.execCommand(type,'',val);
WeisEditor.Run.SaveDataStep();
Editor.Config.Select();
},
FirefoxMenuType:function(type)
{
var typeStr = "selectall|justifyleft|justifycenter|justifyright|insertunorderedlist|insertorderedlist|bold|italic|underline|indent|outdent|undo|redo".split('|');
for(var i=0;i<typeStr.length;i++)
if (type == typeStr[i])
return true;
return false;
},
lookForwardById:function(elt, id, already_called) {
for (var node = already_called ? elt.nextSibling : elt; node != null; node = node.nextSibling) {
if (node.nodeType == 1) {
next = Editor.Config._lookForwardByIdHelper(node, id);
if (next != null) {
return next;
}
}
}
if (elt.parentNode) {
return Editor.Config._findChild(elt.parentNode, id);
}
},
_lookForwardByIdHelper:function(elt, id) {
if (elt['id'] == id) {
return elt;
}
for (var node = elt.childNodes[0]; node != null; node = node.nextSibling) {
var found = Editor.Config.lookForwardById(node, id);
if (found != null) {
return found;
}
}
},
_findChild:function(elt,id)
{
for (var node = elt.childNodes[0]; node != null; node = node.nextSibling) {
if (node.id == id)
return node;
}
},
InitRun:function()
{
Editor.Config.HtmlEdit = $(Editor.Config.EditorID).contentWindow;
Editor.Config.Document = window.isIE ? Editor.Config.HtmlEdit.document : $(Editor.Config.EditorID).contentDocument;
Editor.Config.Document.open("text/html","replace");
Editor.Config.Document.write('<html><head><script type="text/javascript"></script></head><body bgcolor='+Editor.Config.BackColor+' style="background:url('+Editor.Config.BackImage+') '+Editor.Config.BackColor+' repeat-y center top;background-attachment:fixed;" ></body></html>');
Editor.Config.Document.close();
if (window.isIE)
Editor.Config.Document.body.contentEditable = true;
else
Editor.Config.Document.designMode='on' ;
var hidOBJ = parent.document.getElementById(Editor.Config.HidSaveID);
if (hidOBJ)
if (hidOBJ.value.trim()!='')
Editor.Config.Document.body.innerHTML = hidOBJ.value+' ';
if (!window.isIE){
Editor.Config.Document.addEventListener("keypress",function(e){Editor.Config.ChkEnter();},false);
Editor.Config.Document.addEventListener("keydown",function(e){Editor.Config._keyDownListener();},true); //for firefox
Editor.Config.Document.addEventListener("mousedown",function(e){Editor.Config._mouseListenser();MenuItems.Func.CheckIsExist();},true); //for firefox
Editor.Config.Document.addEventListener("keyup",function(e){Editor.Config.ConvertPtoBR();},true);
//Editor.Config.Document.addEventListener("blur",function(e){Editor.replaceSPCTags(Editor.Config.WEditorMode);},false);
}
else {
Editor.Config.Document.attachEvent("onkeydown",function(e){Editor.Config._keyDownListener();});
Editor.Config.Document.attachEvent("onkeypress",function(e){Editor.Config.ChkEnter();});
Editor.Config.Document.attachEvent("onmousedown",function(e){Editor.Config._mouseListenser();MenuItems.Func.CheckIsExist();});
Editor.Config.Document.attachEvent("onkeyup",function(){var E = Editor.Config._keyCode();if (!WeisEditor.Run.Typing)Editor.Config.PHRReplace();/*Editor.replaceSPCTags(Editor.Config.WEditorMode);*/ });
//Editor.Config.Document.attachEvent("onblur",function(e){Editor.replaceSPCTags(Editor.Config.WEditorMode);});
}
window.parent.EditorAPI = Editor;
},
_keyDownListener:function()
{
var A = Editor.Config.WeisEvent();
var E = Editor.Config._keyCode();
if (!Editor.Config._IsSpecialKey(E)&&!(A.ctrlKey&&A.metaKey)&&!(E==46))
{
if (WeisEditor.Run.Typing==false)
{
if (window.isIE) Editor.Config.PHRReplace();
WeisEditor.Run.SaveDataStep();
WeisEditor.Run.Typing=true;
}
}
WeisEditor.Run.IsLocked=false;
},
_mouseListenser:function()
{
WeisEditor.Run.SaveDataStep();
WeisEditor.Run.Typing=false;
WeisEditor.Run.IsLocked=false;
},
_keyCode:function()
{
return Editor.Config.WeisEvent().keyCode || Editor.Config.WeisEvent().which;
},
_IsSpecialKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},
ChkEnter:function(){
Editor.Config.HtmlEdit.focus();
var range = Editor.Config.GetRange();
//if (!range) return;
var E = Editor.Config._keyCode();
var A = Editor.Config.WeisEvent();
if(E==13){
WeisEditor.Run.SaveDataStep();
WeisEditor.Run.IsLocked=false;
WeisEditor.Run.Typing=true?false:true;
}
if (E == 13 && !A.shiftKey && !window.isIE && WeisConfig.EnterEventType == 'P')
{
var containerTag = "div|dl|li|ol|p|address|dir|h1|h2|h3|h4|h5|h6|menu|pre";
var bigContainerTag = "body|td|form|center|blockquote|fieldset";
var Tag = range.startContainer.parentNode;
var scName = range.startContainer.parentNode.nodeName.toLowerCase();
if (Editor.Config.equalSplitChar(containerTag,scName))
{
var Attris = Editor.Config.getTagAttributes(Tag);
Editor.Config.pasteContent("WE_CONTHTML_CODE","______del_bigContainer__ReplaceAddr________");
var __html = Tag.innerHTML ;
__html = __html.replace('______del_bigContainer__ReplaceAddr________',"<\/"+scName+"><"+scName+" "+Attris+"><B id='______del_bigContainer__ReplaceAddr___1_____'></B> ");
__html = "<"+scName+" "+Attris+">" + __html + "<\/"+scName+">";
range.selectNode(Tag);
range.collapse(true);
range.deleteContents();
range.insertNode(range.createContextualFragment(__html));
Tag.parentNode.removeChild(Tag);
var delTag = Editor.Config.Document.getElementById('______del_bigContainer__ReplaceAddr___1_____');
range.selectNodeContents(delTag.parentNode)
range.collapse(true);
var S = Editor.Config.Selection();
S.removeAllRanges();
S.addRange(range);
delTag.parentNode.removeChild(delTag);
WeisEditor.Run.SaveDataStep();
Editor.Config.Select();
}
else if (Editor.Config.equalSplitChar(bigContainerTag,scName))
{
Editor.Config.pasteContent("WE_CONTHTML_CODE","______del_bigContainer__ReplaceAddr________");
var __html ="<p>" + Tag.innerHTML + "</p>";
__html = __html.replace('______del_bigContainer__ReplaceAddr________',"<\/p>\n<p id='______del_bigContainer__ReplaceAddr___2_____'> ");
Tag.innerHTML = __html;
var delTag = Editor.Config.Document.getElementById('______del_bigContainer__ReplaceAddr___2_____');
range.selectNodeContents(delTag)
range.collapse(true);
var S = Editor.Config.Selection();
S.removeAllRanges();
S.addRange(range);
delTag.removeAttribute("id");
WeisEditor.Run.SaveDataStep();
Editor.Config.Select();
}
else
{
Editor.Config.pasteContent("WE_CONTHTML_CODE","______del_bigContainer__ReplaceAddr________");
var C = [],_node;
var N = 0;
var outerTag = null;
var __html = "";
_node = Tag;
while (_node)
{
var tagName = _node.nodeName.toLowerCase();
C.push(_node);
if (Editor.Config.equalSplitChar(containerTag,tagName) || Editor.Config.equalSplitChar(bigContainerTag,tagName) || _node.nodeName.toLowerCase() == 'body')
{
__html = _node.innerHTML;
outerTag = _node;
break;
}
_node = _node.parentNode;
}
for (var i=0;i<C.length;i++)
{
N++;
var repTag = '';
var repAttri = '';
if (C[i].nodeName == 'BODY' || C[i].nodeName == 'TD' || C[i].nodeName == 'FORM')
{
repTag = 'P';
repAttri = ' ';
}
else
{
repTag = C[i].nodeName.toLowerCase();
repAttri = Editor.Config.getTagAttributes(C[i]);
}
if (N == 1)
__html = __html.replace('______del_bigContainer__ReplaceAddr________','<\/'+repTag+'>______del_bigContainer__ReplaceAddr________<'+repTag+' '+repAttri+'> <B id=\'______del_bigContainer__ReplaceAddr_____3___\'></B>');
else
__html = __html.replace('______del_bigContainer__ReplaceAddr________','<\/'+repTag+'>______del_bigContainer__ReplaceAddr________<'+repTag+' '+repAttri+'>');
}
__html = __html.replace('______del_bigContainer__ReplaceAddr________','');
if (outerTag.nodeName == 'BODY' || outerTag.nodeName == 'FORM' || outerTag.nodeName == 'TD')
{
outerTag.innerHTML = '<p>' + __html + '</p>';
}
else
{
var __outerArrti = Editor.Config.getTagAttributes(outerTag);
__html = "<"+outerTag.nodeName.toLowerCase()+" "+__outerArrti+">" + __html +"<\/"+outerTag.nodeName.toLowerCase()+">";
range.selectNode(outerTag);
range.collapse(true);
range.deleteContents();
range.insertNode(range.createContextualFragment(__html));
outerTag.parentNode.removeChild(outerTag);
}
var FN = Editor.Config.Document.getElementById('______del_bigContainer__ReplaceAddr_____3___');
range.selectNodeContents(FN.parentNode)
range.collapse(true);
var S = Editor.Config.Selection();
S.removeAllRanges();
S.addRange(range);
FN.parentNode.removeChild(FN);
WeisEditor.Run.SaveDataStep();
Editor.Config.Select();
}
A.stopPropagation();
A.preventDefault();
returnValue = false;
return false;
}
Editor.Config.ConvertPtoBR();//IE
return true;
},
ConvertPtoBR:function()
{
var range = Editor.Config.GetRange();
//if (!range) return;
var A = Editor.Config.WeisEvent();
var E = Editor.Config._keyCode();
if (E == 13 && !A.shiftKey && window.isIE && WeisConfig.EnterEventType == 'BR')
{
range.pasteHTML('<br />');
WeisEditor.Run.SaveDataStep();
Editor.Config.Select();
A.cancelBubble = true;
//A.preventDefault();
A.returnValue = false;
return false;
}
},
equalSplitChar:function(splitStr,chr)
{
var sp = splitStr.split('|');
for (var i=0;i<sp.length;i++)
if (sp[i] == chr)
return true;
return false;
},
getTagAttributes:function(Node)
{
Node = Node.cloneNode(true);
var outer = Editor.Config.Document.createElement('DIV');
outer.appendChild(Node);
if (RegExp.$1)/(.*)/.exec('');
var hrefAttris = outer.innerHTML;
var Attris = "";
var re = new RegExp('<[a-z]([^>]*?)>','gi');
re.exec(hrefAttris);
if (RegExp.$1) Attris = RegExp.$1;
return Attris;
},
PHRReplace:function(){
var A = Editor.Config.WeisEvent();
var E = Editor.Config._keyCode();
//alert(E)
if (Editor.Config._IsSpecialKey(E)||(A.ctrlKey||A.metaKey)||(E==46)||(E>=91)) //91,92winKey
return;
Editor.Config.HtmlEdit.focus();
var range=Editor.Config.GetRange();
var E = Editor.Config._keyCode();
range.pasteHTML('<B id=\'__________Clear__P____Hr_______\'></B>');
Editor.clearHTML(true);
var NodeID=Editor.Config.Document.getElementById('__________Clear__P____Hr_______');
range.moveToElementText(NodeID);
range.select();
NodeID.parentNode.removeChild(NodeID);
},
LoadEditor:function()
{
var html = "";
html += '<iframe id=\''+Editor.Config.EditorID+'\' height=\''+MU.Config.IfrHeight+'\' frameborder=\'0\' hspace=\'0\' vspace=\'0\' marginwidth=\'5\' marginheight=\'5\'></iframe>';
html += '<input type=\'hidden\' id=\''+Editor.Config.HidSaveID+'\' name=\''+Editor.Config.HidSaveID+'\' value=\'\' />';
html += '<textarea id=\''+Editor.Config.EditorID+'Area\' height=\''+MU.Config.IfrHeight+'\' style=\'display:none;height:'+MU.Config.IfrHeight+'\'></textarea></div>';
$('ifrDiv').innerHTML = html;
}
};
WeisEditor.prototype.format = function(type)
{
if (!Editor.Config.WEditorMode) return;
Editor.Config.HtmlEdit.focus();
WeisEditor.Run.SaveDataStep();
if (window.isIE)
{
Editor.Config.execCMD(type);
}
else
{
if (Editor.Config.FirefoxMenuType(type))
{
Editor.Config.Document.execCommand(type,false,'');
WeisEditor.Run.SaveDataStep();
Editor.Config.Select();
}
else if (type == 'copy')
{
Editor.Config.CopyPanel = Editor.Config.GetRange().toString() + "";
WeisEditor.Run.SaveDataStep();
}
else if (type == 'paste')
{
Editor.Config.pasteContent('WE_CONTHTML_CODE',Editor.Config.CopyPanel);
WeisEditor.Run.SaveDataStep();
Editor.Config.Select();
}
else if(type == 'cut')
{
Editor.Config.CopyPanel = Editor.Config.GetRange().toString() + "";
Editor.Config.pasteContent("WE_CONTHTML_CODE","");
WeisEditor.Run.SaveDataStep();
Editor.Config.Select();
}
}
};
WeisEditor.prototype.createLink = function()
{
if (!Editor.Config.WEditorMode) return;
Editor.Config.HtmlEdit.focus();
WeisEditor.Run.SaveDataStep();
if (window.isIE) {Editor.Config.execCMD('createlink');}
else
{
var url = prompt(WeisLang.InsertHyperLink+':', 'http://');
if ((url != null) && (url != "http://") && url.toLowerCase().indexOf("http://") == 0)
{
if (Editor.Config.GetRange().toString() == "")
{
WeisEditor.Array.length = 0;
WeisEditor.Array[WeisEditor.Array.length] = new hashtable("href",url);
WeisEditor.Array[WeisEditor.Array.length] = new hashtable("innerHTML",url);
Editor.Config.pasteContent('A','');
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -