📄 etsooeditor.js
字号:
var numCellIndex=objTD.cellIndex;
var objTR=objValid.TR;
var numRowIndex=objTR.rowIndex;
var objTable=objValid.Table;
var numNowCols=EditorTableGetCols(objTD,numCellIndex);
var numRows=objTable.rows.length;
for(var numI=0;numI<numRows;numI++){
if(objTable.rows.length==0){
objTable.removeNode(true);
break;
}
var objTempTR=objTable.rows(numI);
if(objTempTR==null)break;
var numTempCols=0;
for(var numH=0;numH<=numCellIndex;numH++){
var objTempTD=objTempTR.cells(numH);
if(objTempTD==null)continue;
var numTempColsAdd=objTempTD.colSpan;
numTempCols+=numTempColsAdd;
if(numType==1){
if(numTempCols>=numNowCols){
if(numTempColsAdd>1)objTempTD.colSpan-=1;
else{
objTempTD.removeNode(true);
if(objTempTR.cells.length==0)
{
objTempTR.removeNode(true);
numI--;
}
}
}
}
else
{
if(numTempCols>numNowCols){
if(numTempColsAdd>1)objTempTD.colSpan+=1;
else{
var objNewTD=objTempTR.insertCell(numI);
objNewTD.innerHTML=" ";
objNewTD.mergeAttributes(objTempTD);
}
}
}
}
}
}
}
//合并单元格
function EditorTableMergeCell(numType){
var objTDs=ETSOOEditor.GetTDs();
var numLen=objTDs.length;
if(numLen>1){
var objBaseTD=objTDs[0];
var objValid=new EditorTableValid(objBaseTD);
if(!objValid.Valid)return false;
var numBaseCellIndex=objBaseTD.cellIndex;
var objBaseTR=objValid.TR;
var numBaseRowIndex=objBaseTR.rowIndex;
var objBaseTable=objValid.Table;
var strText='';
for(var numI=1;numI<numLen;numI++){
var objTD=objTDs[numI];
var objValid=new EditorTableValid(objTD);
if(!objValid.Valid)continue;
var numCellIndex=objTD.cellIndex;
var objTR=objValid.TR;
var numRowIndex=objTR.rowIndex;
var objTable=objBaseTable;
strText+=objTD.innerHTML;
objTR.deleteCell(numCellIndex);
if(objTR.cells.length==0)
{
objTable.deleteRow(numRowIndex);
}
}
if(numType==1){
objBaseTR.deleteCell(numBaseCellIndex);
if(objTR.cells.length==0)
{
objTable.deleteRow(numRowIndex);
}
if(objTable.rows.length==0)
{
objTable.removeNode(true);
}
}
else{
var numRows=objBaseTable.rows.length;
objBaseTD.innerHTML+=strText;
if(numRows==1){
var objTempTR=objBaseTable.rows(0);
var numCells=objTempTR.cells.length;
for(var numH=0;numH<numCells;numH++)
{
var objTempTD=objTempTR.cells(numH);
objTempTD.colSpan=1;
objTempTD.rowSpan=1;
}
}
else{
var numColSpan;
var numRowSpan;
var numCellIndex=objBaseTD.cellIndex;
var numRowIndex=objBaseTR.rowIndex;
var numRows=objTable.rows.length;
var numTempRows=0;
for(var numH=0;numH<numRows;numH++){
if(numH!=numRowIndex){
var objTempTR=objBaseTable.rows(numH);
var numTempCells=objTempTR.cells.length;
if(numCellIndex<=numTempCells){
var objTempTD=objTempTR.cells(numCellIndex);
numTempRows+=objTempTD.rowSpan;
}
else numTempRows++;
}
}
numRowSpan=numRows-numTempRows;
var numNewRowIndex;
if(numRowIndex==numRows-1)numNewRowIndex=numRowIndex-1;
else numNewRowIndex=numRowIndex+1;
var objNewTR=objBaseTable.rows(numNewRowIndex);
var numCols=EditorTableGetCols(objNewTR.cells(0));
var numNowCols=EditorTableGetCols(objBaseTD)-objBaseTD.colSpan;
numColSpan=numCols-numNowCols;
objBaseTD.colSpan=numColSpan;
objBaseTD.rowSpan=numRowSpan;
}
}
}
}
//设置颜色
ETSOOEditor.SetColor=function(strColor,strId){
var objTarget=this.GetObj(strId);
if(objTarget){
objTarget.nextSibling.style.backgroundColor=strColor;
this.MouseClick(objTarget);
}
}
//获取对象
ETSOOEditor._GetEventObj=function(objEvent){
if(objEvent)return (objEvent.srcElement)?objEvent.srcElement:objEvent.target;
}
//获取活动编辑域
ETSOOEditor._GetActiveField=function(strId){
var numPos=strId.indexOf("ETSOOEditorFrame_");
if(numPos==0)strId=strId.substr(17);
var objOne=this.Fields[strId];
if(objOne!=null)this.ActiveField=objOne;
return objOne;
}
//编辑域获得焦点
ETSOOEditor._FrameOnFocus=function(objEvent){
var objTarget=ETSOOEditor._GetEventObj(objEvent);
var objActive=ETSOOEditor._GetActiveField(objTarget.id);
if(objActive&&ETSOOEditor.Browser>100)objActive.History.Add();
ETSOOEditor._DocOnSelectionChange(objEvent);
}
//编辑域失去焦点
ETSOOEditor._FrameOnBlur=function(numType){
ETSOOEditor._SaveContent();
if(ETSOOEditor.Browser>100){
var objActive=ETSOOEditor.ActiveField;
if(objActive)objActive.History.Add(1);
}
}
//保存内容到隐藏文本框
ETSOOEditor._SaveContent=function(strName,numType){
var objField;
if(strName!=null)objField=this.Fields[strName];
else{
objField=ETSOOEditor.ActiveField;
numType=1;
}
if(objField&&objField.FrameWindow.document.body){
if(objField.TextArea.style.display=="none"){
var strContent=objField.FrameWindow.document.body.innerHTML;
if(ETSOOEditor.Browser>100)strContent=this.GetRelativePath(strContent);
objField.TextArea.value=strContent;
}
else if(numType==1)objField.FrameWindow.document.body.innerHTML=objField.TextArea.value;
}
}
//表单提交
ETSOOEditor._FormOnSubmit=function(objEvent){
var objTextArea=ETSOOEditor._GetEventObj(objEvent).getElementsByTagName("textarea");
var numLen=objTextArea.length;
for(var numI=0;numI<numLen;numI++){
var objOne=objTextArea[numI];
if(objOne.className=="SaveData"){
ETSOOEditor._SaveContent(objOne.name);
}
}
}
//编辑域点击
ETSOOEditor._DocOnClick=function(objEvent){
ETSOOPopup.HideFrame();
}
//编辑域鼠标弹起
ETSOOEditor._DocMouseUp=function(objEvent){
if(ETSOOEditor.Browser==105.5)window.ETSOOEditorSavedRange=document.selection.createRange().duplicate();
ETSOOEditor._DocOnSelectionChange(objEvent);
var objField=ETSOOEditor.ActiveField;
if(objField){
var objDiv=objField.Div;
if(ETSOOEditor.MenuBar&&objDiv.getAttribute("ContentType")!=1&&(objDiv.previousSibling==null||objDiv.previousSibling.id!="ETSOOEditor")){
objDiv.parentNode.insertBefore(ETSOOEditor.MenuBar,objDiv);
ETSOOEditor._SetShow("EEForeColor");
ETSOOEditor._SetShow("EEBgColor");
}
}
}
//编辑域双击
ETSOOEditor._DocOnDblClick=function(objEvent){
if(objEvent==null)return false;
var objField=ETSOOEditor.ActiveField;
if(objField.Mode!="Design")return;
var objE=ETSOOEditor._GetEventObj(objEvent);
ETSOOEditor.InsertObj(objE.nodeName,objE);
}
//编辑域按键
ETSOOEditor._DocOnKeyPress=function(objEvent){
ETSOOPopup.HideFrame();
if(objEvent==null)return;
if(objEvent.ctrlKey){
var numKeyCode=objEvent.keyCode;
var objActive=ETSOOEditor.ActiveTarget;
var objField=ETSOOEditor.ActiveField;
var objDoc=objField.FrameWindow.document;
var blnSet=true;
var numBrowser=ETSOOEditor.Browser;
switch(numKeyCode){
//F-Find, F-Find, X-Cut, V-Paste, C-Copy, D-Delete
//M-Image, G-Face, B-Bold, I-Italic, U-Underline, L-Left, E-Center, R-Right
case 13: //回车
var objTextArea=objField.TextArea;
var objForm=objTextArea.form;
if(objForm){
var blnOK=true;
ETSOOEditor._SaveContent();
if(objForm.onsubmit)blnOK=objForm.onsubmit();
if(blnOK)objForm.submit();
}
break;
case 69: //E
objDoc.execCommand(CMD_CENTER,UI_DEFAULT,null);
if(numBrowser>100)objField.History.Add();
break;
case 71: //G
ETSOOEditor.InsertObj("FACE");
break;
case 75: //K
var objE;
if(objActive.tagName=="A")objE=objActive;
ETSOOEditor.InsertObj("A",objE);
break;
case 76: //L
objDoc.execCommand(CMD_LEFT,UI_DEFAULT,null);
if(numBrowser>100)objField.History.Add();
break;
case 77: //M
var objE;
if(objActive.tagName=="IMG")objE=objActive;
ETSOOEditor.InsertObj("IMG",objE);
break;
case 82: //R
objDoc.execCommand(CMD_RIGHT,UI_DEFAULT,null);
if(numBrowser>100)objField.History.Add();
break;
case 89: //Y
if(numBrowser>100)objField.History.Go(1);
else objDoc.execCommand(CMD_REDO,UI_DEFAULT, null);
break;
case 90: //Z
if(numBrowser>100)objField.History.Go(-1);
else objDoc.execCommand(CMD_UNDO,UI_DEFAULT, null);
break;
case 189: //-
case 109:
if(numBrowser<100)break;
var objDecrease=ETSOOEditor._GetNamedDiv(objField.Div,"Decrease");
if(objDecrease)ETSOOEditor.MouseClick(objDecrease);
break;
case 187:
case 107:
if(numBrowser<100)break;
var objIncrease=ETSOOEditor._GetNamedDiv(objField.Div,"Increase");
if(objIncrease)ETSOOEditor.MouseClick(objIncrease);
break;
default:
blnSet=false;
}
if(blnSet){
ETSOOEditor._FrameOnBlur();
ETSOOEditor.CancelBubble(objEvent);
return false;
}
}
}
//获得指定名称的Div
ETSOOEditor._GetNamedDiv=function(objDiv,strName){
var arrDivs=objDiv.getElementsByTagName("div");
var numLen=arrDivs.length;
for(var numI=0;numI<numLen;numI++){
var objOne=arrDivs[numI];
if(objOne.getAttribute("name")==strName)return objOne;
}
}
//编辑域右键菜单
ETSOOEditor._DocOnContextMenu=function(objEvent){
if(ETSOOEditor.MenuBar==null)return false;
ETSOOEditor._DocOnSelectionChange(objEvent);
if(objEvent==null)return;
var objField=ETSOOEditor.ActiveField;
if(objField.Mode!="Design")return;
var arrPos=ETSOOGetPos(objField.FrameDocument);
var numLeft=objEvent.clientX+arrPos[0],numTop=objEvent.clientY+arrPos[1];
var objPopup=new ETSOOPopup();
var strPath=ETSOOEditor.Path;
objPopup.BgColor=objField.BgColor;
objPopup.Skin=strPath+"Skins/"+ETSOOEditor.ActiveField.Skin+"/Popup.css";
var arrSubMenu=ETSOOEditor._GetMenuItem(objEvent);
var arrMenus=ETSOOEditor.GetSubMenu(arrSubMenu);
var strContent=arrMenus[0];
objPopup.Height=arrMenus[1]*24+arrMenus[2]*6+4;
if(window.createPopup==null){
objPopup.URL=strPath+"Dialogs/ContextMenu.htm";
}
objPopup.Content=strContent;
objPopup.Left=numLeft;
objPopup.Top=numTop;
objPopup.Show();
ETSOOEditor.CancelBubble(objEvent);
return false;
}
//取消冒泡
ETSOOEditor.CancelBubble=function(objEvent){
if(ETSOOEditor.Browser>100)objEvent.cancelBubble=true;
else objEvent.preventDefault();
}
//动态获取对象
ETSOOEditor._GetMenuItem=function(objEvent){
var objLangs=this.Langs;
var arrItems=new Array("SelectAll",objLangs["SelectAll"],"PasteWord",objLangs["Paste"]);
var objCut=this.GetObj("EECut");
if(objCut&&objCut.className!="Disabled"){
arrItems=arrItems.concat("NewLine","","Cut",objLangs["Cut"],"Copy",objLangs["Copy"],"Delete",objLangs["Delete"]);
}
var objE=this._GetEventObj(objEvent);
if(objE.nodeName=="BODY"&&this.Browser>100){
var objRange=this.ActiveField.FrameWindow.document.selection.createRange();
if(objRange.length!=null)objE=objRange(0);
}
this.ActiveTarget=objE;
var strNodeName=objE.nodeName;
var strType=objE.type;
if(strNodeName=="OBJECT"){
if(objE.Movie)strType="Flash";
else strType="Media";
}
if(this.GetWordArt())strNodeName="ART";
var arrAdd=this.InsertObj(strNodeName,1,strType);
var numLen=arrAdd.length;
if(numLen>0){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -