📄 etsooeditor.js
字号:
/*
亿速编辑器由青岛亿速思维网络科技有限公司开发,版权所有,未经许可,严禁用于商业目的或作为其他产品的任何部分发布。
EOEditor by Qingdao ETSOO Network-Tech Co., Ltd. This script may not be used or distributed without license.
Version 4.0.0, http://www.etsoo.com
*/
//定义编辑器类
function ETSOOEditor(){}
//预定义ETSOOPreloadImage - 设置为true将预先加载图标
if(typeof(ETSOOPreloadImage)=="undefined")ETSOOPreloadImage=false;
ETSOOEditor.PreloadImage=ETSOOPreloadImage;
//预定义ETSOOActiveStatus - 允许实时按钮状态
if(typeof(ETSOOActiveStatus)=="undefined")ETSOOActiveStatus="auto";
var ETSOOEditor_Start=new Date().valueOf();
ETSOOEditor.ActiveStatus=ETSOOActiveStatus;
//获取脚本文件路径
function _EEGetPath(){
var arrScripts=document.getElementsByTagName("script");
var numLen=arrScripts.length;
var regEditor=/(.*)ETSOOEditor\.js/gi;
for(var numI=0;numI<numLen;numI++){
var strSrc=arrScripts[numI].src;
if(regEditor.test(strSrc)){
var strPath=RegExp.$1;
return ETSOOEditor.GetRelativePath(strPath);
}
}
}
//获取对象的位置
function ETSOOGetPos(objE){
var numLeft=0,numTop=0;
while(objE){
numLeft+=objE.offsetLeft;
numTop+=objE.offsetTop;
objE=objE.offsetParent;
}
return new Array(numLeft,numTop);
}
//获取语言,扩充语言支持,请修改arrLanguages数组
function _EEGetLanguage(strLanguage){
var arrLanguages=new Array();
arrLanguages["zh-cn"]="gb2312";
arrLanguages["en"]="iso8859-1";
if(strLanguage==null){
if(ETSOOEditor.Browser>100)strLanguage=window.navigator.userLanguage;
else strLanguage=window.navigator.language;
if(strLanguage==null)strLanguage="en";
}
strLanguage=strLanguage.toLowerCase();
if(arrLanguages[strLanguage]==null)
{
strLanguage=strLanguage.split("-")[0];
if(arrLanguages[strLanguage]==null)strLanguage="en";
}
return strLanguage;
}
/* 定义编辑器全局属性和方法 */
//浏览器版本
function _EEGetBrowser(){
var numVersion=0,strApp=navigator.appVersion;
if(window.navigator.language==null){
var regApp=/ MSIE (.*);/gi;
if(regApp.test(strApp))numVersion=100+parseFloat(RegExp.$1);
}else numVersion=parseFloat(strApp);
return numVersion;
}
ETSOOEditor.Browser=_EEGetBrowser();
//全局execCommand关键字
if(ETSOOEditor.Browser<100){
CMD_ABSOLUTEPOS = "absoluteposition";
CMD_BOLD = "bold";
CMD_COPY = "copy";
CMD_CUT = "cut";
CMD_DELETE = "Delete";
CMD_FIND = "find";
CMD_FONT = "fontname";
CMD_GETBACKCOLOR = "backcolor";
CMD_GETFONTNAME = "fontname";
CMD_GETFONTSIZE = "fontsize";
CMD_GETFORECOLOR = "forecolor";
CMD_HYPERLINK = "createlink";
CMD_ANCHORLINK = "createbookmark";
CMD_IMAGE = "insertimage";
CMD_INDENT = "indent";
CMD_HR = "inserthorizontalrule";
CMD_ITALIC = "italic";
CMD_CENTER = "justifycenter";
CMD_LEFT = "justifyleft";
CMD_RIGHT = "justifyright";
CMD_FULL = "justifyfull";
CMD_ORDERLIST = "insertorderedlist";
CMD_OUTDENT = "outdent";
CMD_PASTE = "paste";
CMD_REDO = "redo";
CMD_REMOVEFORMAT = "removeformat";
CMD_SELECTALL = "selectall";
CMD_BGCOLOR = "backcolor";
CMD_SETBLOCKFMT = "formatblock";
CMD_FONTSET = "fontname";
CMD_FONTSIZE = "fontsize";
CMD_FORECOLOR = "forecolor";
CMD_STRIKETHROUGH = "strikethrough";
CMD_SUBSCRIPT = "subscript";
CMD_SUPERSCRIPT = "superscript";
CMD_UNDERLINE = "underline";
CMD_UNDO = "undo";
CMD_UNLINK = "unlink";
CMD_UNANCHOR = "unBookmark";
CMD_UNORDERLIST = "insertunorderedlist";
// User Interface
UI_DEFAULT = false;
UI_YES = true;
UI_NO = false;
}else{
CMD_ABSOLUTEPOS = "AbsolutePosition";
CMD_BOLD = "Bold";
CMD_COPY = "Copy";
CMD_CUT = "Cut";
CMD_DELETE = "Delete";
CMD_FIND = "Find";
CMD_FONT = "FontName";
CMD_GETBACKCOLOR = "BackColor";
CMD_GETFONTNAME = "FontName";
CMD_GETFONTSIZE = "FontSize";
CMD_GETFORECOLOR = "ForeColor";
CMD_HYPERLINK = "CreateLink";
CMD_ANCHORLINK = "CreateBookmark";
CMD_IMAGE = "InsertImage";
CMD_INDENT = "Indent";
CMD_HR = "InsertHorizontalRule";
CMD_ITALIC = "Italic";
CMD_CENTER = "JustifyCenter";
CMD_LEFT = "JustifyLeft";
CMD_RIGHT = "JustifyRight";
CMD_FULL = "JustifyFull";
CMD_ORDERLIST = "InsertOrderedList";
CMD_OUTDENT = "Outdent";
CMD_PASTE = "Paste";
CMD_REDO = "Redo";
CMD_REMOVEFORMAT = "RemoveFormat";
CMD_SELECTALL = "SelectAll";
CMD_BGCOLOR = "BackColor";
CMD_SETBLOCKFMT = "FormatBlock";
CMD_FONTSET = "FontName";
CMD_FONTSIZE = "FontSize";
CMD_FORECOLOR = "ForeColor";
CMD_STRIKETHROUGH = "StrikeThrough";
CMD_SUBSCRIPT = "SubScript";
CMD_SUPERSCRIPT = "SuperScript";
CMD_UNDERLINE = "Underline";
CMD_UNDO = "Undo";
CMD_UNLINK = "Unlink";
CMD_UNANCHOR = "UnBookmark";
CMD_UNORDERLIST = "InsertUnorderedList";
// User Interface
UI_DEFAULT = false;
UI_YES = true;
UI_NO = false;
}
//编辑器公用属性和方法
ETSOOEditor.AutoClearWord=ETSOOEditor.Browser<105.5?false:true;
ETSOOEditor.XMLDom=null;
ETSOOEditor.ActiveField=null;
ETSOOEditor.ActiveTarget=null;
ETSOOEditor.MenuBar=null;
ETSOOEditor.Fields=[];
ETSOOEditor.ReadyState=0;
ETSOOEditor.Version="4.0.0";
ETSOOEditor.SubMenu=[];
//取得网站根路径
ETSOOEditor.GetBasePath=function(){
var strBase=document.domain;
var numPort=document.location.port;
if(numPort!="")strBase+=':'+numPort;
return strBase;
}
//取得相对路径
ETSOOEditor.GetRelativePath=function(strPath){
var strBase=this.GetBasePath();
strPath=strPath.replace(new RegExp("http://"+strBase,"gi"),"");
return strPath;
}
var _BasePath=_EEGetPath();
_BasePath=_BasePath.replace(/\/\//gi,"\/");
ETSOOEditor.Path=_BasePath;
//字符变量,可以使用静态方法从而减小计算
ETSOOEditor.Langs=[];
//预载图片
ETSOOEditor.Inco={
NEW: "new.gif",OPEN: "open.gif",SAVE: "save.gif",FIND: "search.gif",CUT: "cut.gif",CUTDISABLED: "cutdisabled.gif",COPY: "copy.gif",COPYDISABLED: "copydisabled.gif",PASTE: "paste.gif",PASTEDISABLED: "pastedisabled",
PASTETEXT: "pastetext.gif",PASTEWORD: "pasteword.gif",DELETE: "delete.gif",DELETEDISABLED: "deletedisabled.gif",UNDO: "undo.gif",UNDODISABLED: "undodisabled.gif",REDO: "redo.gif",REDODISABLED: "redodisabled.gif",EMOTION: "emotion.gif",FLASH: "flash.gif",MEDIA: "media.gif",
MARQUEE: "marquee.gif",SPECIAL: "special.gif",IMAGELINK: "imagelink.gif",IMAGE: "image.gif",LAYER: "layer.gif",TABLE: "table.gif",INSERTROW: "table/insertrow.gif",INSERTCOL: "table/insertcol.gif",DELETEROW: "table/deleterow.gif",DELETECOL: "table/deletecol.gif",
SPLITCELL: "table/splitcell.gif",MERGECELL: "table/mergecell.gif",CELLPROPERTY: "table/cellproperty.gif",TABLEPROPERTY: "table/property.gif",FORM: "form.gif",FORMPROPERTY: "form/property.gif",FORMTEXT: "form/text.gif",FORMTEXTAREA: "form/textarea.gif",FORMFILE: "form/upload.gif",FORMCHECKBOX: "form/checkbox.gif",
FORMRADIO: "form/radio.gif",FORMFIELDSET: "form/fieldset.gif",FORMSELECT: "form/select.gif",FORMBUTTON: "form/button.gif",FORMIMAGE: "form/image.gif",FORMLABEL: "form/label.gif",HR: "hr.gif",LINK: "link.gif",LINKDISABLED: "linkdisabled.gif",EMAILLINK: "emaillink.gif",
ANCHOR: "anchor.gif",TAB: "tab.gif",PAINT: "paint/paint.gif",ART: "paint/art.gif",NORMALPROPERTY: "properties.gif",CONTROLPROPERTY: "controlproperty.gif",CSSPROPERTY: "cssproperty.gif",FULLSCREEN: "fullscreen.gif",HELP: "help.gif",ABOUT: "about.gif",
BOLD: "bold.gif",ITALIC: "italic.gif",UNDERLINE: "underline.gif",STRIKETHROUGH: "strikethrough.gif",REMOVEFORMAT: "removeformat.gif",LEFT: "justifyleft.gif",RIGHT: "justifyright.gif",CENTER: "justifycenter.gif",FULL: "justifyfull.gif",FORECOLOR: "forecolor.gif",
BGCOLOR: "backcolor.gif",ORDERLIST: "number.gif",UNORDERLIST: "unnumber.gif",INDENT: "indent.gif",OUTDENT: "outdent.gif",SUPERSCRIPT: "superscript.gif",SUPERSCRIPTDISABLED: "superscriptdisabled.gif",SUBSCRIPT: "subscript.gif",SUBSCRIPTDISABLED: "subscriptdisabled.gif",ABSOLUTEPOS: "abspos.gif",
ABSOLUTEPOSDISABLED: "absposdisabled.gif",UPLEVEL: "forward.gif",UPLEVELDISABLED: "forwarddisabled.gif",DOWNLEVEL: "backward.gif",DOWNLEVELDISABLED: "backwarddisabled.gif",FIRSTLEVEL: "first.gif",LASTLEVEL: "last.gif",DESIGN: "ViewDesign.gif",CODE: "ViewCode.gif",PREVIEW: "ViewPreview.gif",
INCREASE: "increase.gif",DECREASE: "decrease.gif",BLANK: "blank.gif",MORE: "more.gif", MOREDISABLED: "moredisabled.gif", CALENDAR: "calendar.gif",TIME: "time.gif", FORMULA: "formula.gif", UNLINK: "unlink.gif", ANCHORLINK: "anchorlink.gif", SELECTALL: "selectall.gif", EOEDITOR: "eoeditor.gif",
INSERTFILE: "file.gif", CLEARART: "delete.gif"
};
if(ETSOOEditor.PreloadImage)_preLoadImage();
//预载图片函数
function _preLoadImage(){
for(strItem in ETSOOEditor.Inco){
var strImage=ETSOOEditor.Inco[strItem];
var objImage=new Image();
objImage.src=_BasePath+"Images/"+strImage;
ETSOOEditor.Inco[strItem]=objImage;
}
};
//取得图片地址
ETSOOEditor.GetImgSrc=function(strName){
var strSrc;
with(this){
if(PreloadImage)strSrc=Inco[strName].src;
else strSrc=Path+"Images/"+Inco[strName];
}
return strSrc;
}
//默认字体
ETSOOEditor.BaseFonts=["Arial","Arial Black","Arial Narrow","Brush ScripMT","Century Gothic","Comic Sans MS","Courier","Courier New","MS Sans Serif","Script","System","Times New Roman","Verdana","Wide Latin","Wingdings","Wingdings 2","Wingdings 3"];
//补充字体
ETSOOEditor.AddFonts=[];
//是否已经预定义语言
var _BaseLanguage;
if(typeof(ETSOOBaseLanguage)=="undefined")_BaseLanguage=_EEGetLanguage();
else _BaseLanguage=ETSOOBaseLanguage;
ETSOOEditor.BaseLanguage=_BaseLanguage;
//生成一般图片事件
ETSOOEditor._GetImgStr=function(strPath,strBgColor,numWidth,numHeight,strName,strLang,strAdd){
var strImgSrc="blank.gif";
if(!this.PreloadImage){
var strIndex=strName;
if(strIndex.substring(0,2)=="EE")strIndex=strIndex.substr(2);
strImgSrc=this.Inco[strIndex.toUpperCase()];
}
var strImg='<img src="'+strPath+'Images/'+strImgSrc+'" align="absbottom" style="border:1px solid '+strBgColor+'" width="'+numWidth+'" heigh="'+numHeight+'"';
if(strName=="EEMore")strImg+=' target="'+strAdd+'" menutarget="'+strAdd+'"';
strImg+=' id="'+strName+'" title="'+strLang+'" basetitle="'+strLang+'"';
strImg+='>';
return strImg;
}
//历史记录
ETSOOEditor.History=function(objField){
this.Field=objField;
this.Data=[];
this.BookMark=[];
this.Position=0;
this.Add=function(numType){
if(!ETSOOEditor.ActiveStatus)return;
if(numType==null)ETSOOEditor._FrameOnBlur();
var objField=this.Field;
var numPos=this.Position;
var numLen=this.Data.length;
if(objField.Mode!="Preview"){
var strContent=objField.TextArea.value;
if(this.Data[numPos]!=strContent){
numPos++;
for(var numI=0;numI<numLen-numPos;numI++){
this.Data.pop();
this.BookMark.pop();
}
this.Data[numPos]=strContent;
numLen=numPos+1;
var objSelection=objField.FrameWindow.document.selection;
if(objSelection.type!="Control")this.BookMark[numPos]=objSelection.createRange().getBookmark();
else this.BookMark[numPos]=objSelection.createRange()[0];
this.Position=numPos;
}
}
ETSOOEditor._SetRedoUndo(numLen,numPos);
}
this.Go=function(numStep){
var objField=this.Field;
var blnValid=false;
var numLen=this.Data.length;
var numPos=this.Position;
numPos+=numStep;
if(numStep>0){
if(numPos<=numLen-1)blnValid=true;
}else{
if(numPos>=0)blnValid=true;
}
if(blnValid){
this.Position=numPos;
if(objField.TextArea.style.display=="none")objField.FrameWindow.document.body.innerHTML=this.Data[this.Position];
else objField.TextArea.value=this.Data[this.Position];
this.SetCursor();
ETSOOEditor._SetRedoUndo(numLen,numPos);
}
}
this.SetCursor=function(){
var objRange=this.Field.FrameWindow.document.body.createTextRange();
var strBM=this.BookMark[this.Position];
if(strBM!="[object]"&&strBM!=null){
if(objRange.moveToBookmark(strBM)){
objRange.collapse(false);
objRange.select();
}
}
}
}
//设置撤销重做图片按钮
ETSOOEditor._SetRedoUndo=function(numLen,numPos){
var numType=-1;
if(numLen>1&&numPos>0)numType=0;
ETSOOEditor._SetButton("Undo",numType);
var numType=-1;
if(numPos<numLen-1)numType=0;
ETSOOEditor._SetButton("Redo",numType);
}
//获取对象
ETSOOEditor.GetObj=function(strId){
return document.getElementById(strId);
}
//鼠标事件相应
ETSOOEditor._doMouseEvent=function(objE,strType){
var strClassName=objE.className;
if(strClassName!="Keep"&&strClassName!="Disabled"){
if(strType=="Over")
{
with(objE.style){
borderLeft="1px solid buttonhighlight";
borderTop="1px solid buttonhighlight";
borderRight="1px solid buttonshadow";
borderBottom="1px solid buttonshadow";
backgroundColor="";
}
}
else if(strType=="Out")
{
var strBgColor;
var objT=ETSOOEditor.MenuBar;
if(objT==null||objE.id=="ToolDiv")objT=ETSOOEditor.GetTarget(objE.parentNode,"DIV");
strBgColor=objT.style.backgroundColor;
with(objE.style){
border="1px solid "+strBgColor;
backgroundColor="";
}
objE.setAttribute("Active",0);
}
else if(strType=="Down")
{
with(objE.style){
borderLeft="1px solid buttonshadow";
borderTop="1px solid buttonshadow";
borderRight="1px solid buttonhighlight";
borderBottom="1px solid buttonhighlight";
backgroundColor="#FFFFFF";
}
var numKeep=objE.getAttribute("Keep");
if(numKeep==1)objE.className="Keep";
objE.setAttribute("Active",1);
}
}
}
//图标鼠标经过
ETSOOEditor.MouseOver=function(objE){
ETSOOEditor._doMouseEvent(objE,"Over");
}
//移出
ETSOOEditor.MouseOut=function(objE){
ETSOOEditor._doMouseEvent(objE,"Out");
}
//按下
ETSOOEditor.MouseDown=function(objE){
ETSOOEditor._doMouseEvent(objE,"Down");
}
//设置样式
ETSOOEditor._SetStyle=function(objFrameWin,blnDisabled){
var objStyle=objFrameWin.document.styleSheets;
if(objStyle.length>0)objStyle[0].disabled=blnDisabled;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -