📄 fckeditorcode_gecko_2.js
字号:
*
* Version: 2.0 RC3
* Created: 2005-03-02 14:14:18 */
FCK.RedirectNamedCommands=new Object();FCK.ExecuteNamedCommand=function(commandName,commandParameter){if (FCK.RedirectNamedCommands[commandName]!=null) FCK.ExecuteRedirectedNamedCommand(commandName,commandParameter);else{FCK.Focus();FCK.EditorDocument.execCommand(commandName,false,commandParameter);FCK.Events.FireEvent('OnSelectionChange');};};FCK.GetNamedCommandState=function(commandName){try{if (!FCK.EditorDocument.queryCommandEnabled(commandName)) return FCK_TRISTATE_DISABLED;else return FCK.EditorDocument.queryCommandState(commandName)?FCK_TRISTATE_ON:FCK_TRISTATE_OFF;}catch (e){return FCK_TRISTATE_OFF;};};FCK.GetNamedCommandValue=function(commandName){var sValue='';var eState=FCK.GetNamedCommandState(commandName);if (eState==FCK_TRISTATE_DISABLED) return null;try{sValue=this.EditorDocument.queryCommandValue(commandName);}catch(e) {};return sValue?sValue:'';};FCK.CleanAndPaste=function(html){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,"");html=html.replace(/ /," ");var re=new RegExp("(<P)([^>]*>.*?)(<\/P>)","gi");html=html.replace(re,"<div$2</div>");FCK.InsertHtml(html);};FCK.Preview=function(){var oWindow=window.open('',null,'toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes');var sHTML='<html><head><link href="'+FCKConfig.EditorAreaCSS+'" rel="stylesheet" type="text/css" /></head><body>'+FCK.GetHTML()+'</body></html>';oWindow.document.write(sHTML);oWindow.document.close();};FCK.SwitchEditMode=function(){var bWYSIWYG=(FCK.EditMode==FCK_EDITMODE_WYSIWYG);document.getElementById('eWysiwyg').style.display=bWYSIWYG?'none':'';document.getElementById('eSource').style.display=bWYSIWYG?'':'none';if (bWYSIWYG) document.getElementById('eSourceField').value=(FCKConfig.EnableXHTML&&FCKConfig.EnableSourceXHTML?FCK.GetXHTML(FCKConfig.FormatSource):FCK.GetHTML(FCKConfig.FormatSource));else FCK.SetHTML(FCK.GetHTML(),true);FCK.EditMode=bWYSIWYG?FCK_EDITMODE_SOURCE:FCK_EDITMODE_WYSIWYG;FCKToolbarSet.RefreshModeState();FCK.Focus();};FCK.CreateElement=function(tag){var e=FCK.EditorDocument.createElement(tag);return FCK.InsertElementAndGetIt(e);};FCK.InsertElementAndGetIt=function(e){e.setAttribute('__FCKTempLabel',1);this.InsertElement(e);var aEls=FCK.EditorDocument.getElementsByTagName(e.tagName);for (var i=0;i<aEls.length;i++){if (aEls[i].getAttribute('__FCKTempLabel')){aEls[i].removeAttribute('__FCKTempLabel');return aEls[i];};};};
FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(commandName){switch (commandName){case 'Unlink':return FCKSelection.HasAncestorNode('A')?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;default:return FCK._BaseGetNamedCommandState(commandName);};};FCK.RedirectNamedCommands={Print:true,Paste:true,Cut:true,Copy:true};FCK.ExecuteRedirectedNamedCommand=function(commandName,commandParameter){switch (commandName){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try { if (FCK.Paste()) FCK._BaseExecuteNamedCommand('Paste');}catch (e) { alert(FCKLang.PasteErrorPaste);};break;case 'Cut':try { FCK._BaseExecuteNamedCommand('Cut');}catch (e) { alert(FCKLang.PasteErrorCut);};break;case 'Copy':try { FCK._BaseExecuteNamedCommand('Copy');}catch (e) { alert(FCKLang.PasteErrorCopy);};break;default:FCK.ExecuteNamedCommand(commandName,commandParameter);};};FCK.AttachToOnSelectionChange=function(functionPointer){this.Events.AttachEvent('OnSelectionChange',functionPointer);};FCK.Paste=function(){if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;}else if (FCKConfig.AutoDetectPasteFromWord&&FCKBrowserInfo.IsIE55OrMore){var sHTML=FCK.GetClipboardHTML();var re=/<\w[^>]* class="?MsoNormal"?/gi;if (re.test(sHTML)){if (confirm(FCKLang["PasteWordConfirm"])){FCK.CleanAndPaste(sHTML);return false;};};}else return true;};FCK.InsertHtml=function(html){var oSel=FCKSelection.Delete();var oRange=oSel.getRangeAt(0);var oFragment=oRange.createContextualFragment(html);var oLastNode=oFragment.lastChild;oRange.insertNode(oFragment);oRange.setEndAfter(oLastNode);oRange.setStartAfter(oLastNode);oSel.removeAllRanges();oSel=FCK.EditorWindow.getSelection();oSel.addRange(oRange);this.Focus();};FCK.InsertElement=function(element){var oSel=FCKSelection.Delete();var oRange=oSel.getRangeAt(0);oRange.insertNode(element);oRange.setEndAfter(element);oRange.setStartAfter(element);this.Focus();};FCK.PasteAsPlainText=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');};FCK.PasteFromWord=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(url){FCK.ExecuteNamedCommand('Unlink');if (url.length>0){var sTempUrl='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',sTempUrl);var oLink=document.evaluate("//a[@href='"+sTempUrl+"']",this.EditorDocument.body,null,9,null).singleNodeValue;if (oLink){oLink.href=url;return oLink;};};};
var FCKSelection=new Object();FCK.Selection=FCKSelection;
FCKSelection.GetType=function(){this._Type='Text';var oSel=FCK.EditorWindow.getSelection();if (oSel&&oSel.rangeCount==1){var oRange=oSel.getRangeAt(0);if (oRange.startContainer==oRange.endContainer&&(oRange.endOffset-oRange.startOffset)==1) this._Type='Control';};return this._Type;};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var oSel=FCK.EditorWindow.getSelection();return oSel.anchorNode.childNodes[oSel.anchorOffset];};};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentElement;else{var oSel=FCK.EditorWindow.getSelection();if (oSel){var oNode=oSel.anchorNode;while (oNode&&oNode.nodeType!=1) oNode=oNode.parentNode;return oNode;};};};FCKSelection.MoveToNode=function(node){var oSel=FCK.EditorWindow.getSelection();for (i=oSel.rangeCount-1;i>=0;i--){if (i==0) oSel.getRangeAt(i).selectNodeContents(node);else oSel.removeRange(oSel.getRangeAt(i));};};FCKSelection.HasAncestorNode=function(nodeTagName){var oContainer=this.GetSelectedElement();if (!oContainer&&FCK.EditorWindow){try { oContainer=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;}catch(e){};};while (oContainer){if (oContainer.tagName==nodeTagName) return true;oContainer=oContainer.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(nodeTagName){var oNode;var oContainer=this.GetSelectedElement();if (!oContainer) oContainer=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;while (oContainer){if (oContainer.tagName==nodeTagName) return oContainer;oContainer=oContainer.parentNode;};};FCKSelection.Delete=function(){var oSel=FCK.EditorWindow.getSelection();for (var i=0;i<oSel.rangeCount;i++){oSel.getRangeAt(i).deleteContents();};return oSel;};FCKSelection.SelectElement=function(element){var oRange=FCK.EditorDocument.createRange();oRange.selectNode(element);var oSel=FCK.EditorWindow.getSelection();oSel.removeAllRanges();oSel.addRange(oRange);}
var FCKPanel=function(parentWindow){if (parentWindow) this.Window=parentWindow;else{this.Window=window;while (this.Window!=window.top){try{if (this.Window.parent.document.body.tagName=='FRAMESET') break;}catch (e){break;};this.Window=this.Window.parent;};};};FCKPanel.prototype.Create=function(){this._IFrame=this.Window.document.body.appendChild(this.Window.document.createElement('IFRAME'));this._IFrame.src='about:blank';this._IFrame.frameBorder='0';this._IFrame.scrolling='no';this._IFrame.style.left='0px';this._IFrame.style.top='0px';this._IFrame.width=10;this._IFrame.height=10;this._IFrame.style.position='absolute';this._IFrame.style.visibility='hidden';this._IFrame.IsFCKPanel=true;this._IFrame.Panel=this;this.Document=this._IFrame.contentWindow.document;this.Document.open();this.Document.write('<html><head></head><body><\/body><\/html>');this.Document.close();this.Document.body.style.margin=this.Document.body.style.padding='0px';if (this.StyleSheet) FCKTools.AppendStyleSheet(this.Document,this.StyleSheet);this.OuterDiv=this.Document.body.appendChild(this.Document.createElement('DIV'));this.OuterDiv.style.cssFloat='left';this.PanelDiv=this.OuterDiv.appendChild(this.Document.createElement('DIV'));this.PanelDiv.className='FCK_Panel';this.Created=true;};FCKPanel.prototype.Show=function(panelX,panelY,relElement,width,height,autoSize){if (!this.Created) this.Create();if (width!=null&&autoSize&&width<this.OuterDiv.offsetWidth) this.PanelDiv.style.width=width;if (height!=null&&autoSize&&height<this.PanelDiv.offsetHeight) this.PanelDiv.style.height=height+'px';var oPos=this.GetElementPosition(relElement);panelX+=oPos.X;panelY+=oPos.Y;if (panelX+this.OuterDiv.offsetWidth>this.Window.innerWidth){panelX-=panelX+this.OuterDiv.offsetWidth-this.Window.innerWidth;};this._IFrame.style.left=panelX+'px';this._IFrame.style.top=panelY+'px';function SetOnClickListener(targetWindow,targetFunction){try{if (targetWindow==null||(targetWindow.frameElement&&targetWindow.frameElement.IsFCKPanel)) return;targetWindow.document.addEventListener('click',targetFunction,false);}catch (e) {};for (var i=0;i<targetWindow.frames.length;i++) SetOnClickListener(targetWindow.frames[i],targetFunction);};SetOnClickListener(window.top,FCKPanelEventHandlers.OnDocumentClick);this._IFrame.width=this.OuterDiv.offsetWidth;this._IFrame.height=this.OuterDiv.offsetHeight;this._IFrame.style.visibility='';};FCKPanel.prototype.GetElementPosition=function(el){var c={ X:0,Y:0 };while (el){c.X+=el.offsetLeft;c.Y+=el.offsetTop;if (el.offsetParent==null&&el.ownerDocument.defaultView!=this.Window) el=el.ownerDocument.defaultView.frameElement;else el=el.offsetParent;};return c;};FCKPanel.prototype.Hide=function(){this.PanelDiv.style.overflow='visible';this._IFrame.style.visibility='hidden';};var FCKPanelEventHandlers=new Object();FCKPanelEventHandlers.OnDocumentClick=function(e){var oWindow=e.target.ownerDocument.defaultView;if (!oWindow.IsFCKPanel){function RemoveOnClickListener(targetWindow){if (targetWindow==null) return;try{if (targetWindow.frameElement&&targetWindow.frameElement.IsFCKPanel) targetWindow.frameElement.Panel.Hide();else targetWindow.document.removeEventListener('click',FCKPanelEventHandlers.OnDocumentClick,false);}catch (e) {};for (var i=0;i<targetWindow.frames.length;i++) RemoveOnClickListener(targetWindow.frames[i]);};RemoveOnClickListener(window.top);};}
var FCKTableHandler=new Object();FCKTableHandler.InsertRow=function(){var oRow=FCKSelection.MoveToAncestorNode("TR");if (!oRow) return;var oNewRow=oRow.cloneNode(true);oRow.parentNode.insertBefore(oNewRow,oRow);FCKTableHandler.ClearRow(oRow);};FCKTableHandler.DeleteRows=function(row){if (!row) row=FCKSelection.MoveToAncestorNode("TR");if (!row) return;var oTable=FCKTools.GetElementAscensor(row,'TABLE');if (oTable.rows.length==1){FCKTableHandler.DeleteTable(oTable);return;};row.parentNode.removeChild(row);};FCKTableHandler.DeleteTable=function(table){if (!table) table=FCKSelection.MoveToAncestorNode("TABLE");if (!table) return;table.parentNode.removeChild(table);};FCKTableHandler.InsertColumn=function(){var oCell=FCKSelection.MoveToAncestorNode("TD");if (!oCell) return;var oTable=FCKTools.GetElementAscensor(oCell,'TABLE');var iIndex=oCell.cellIndex+1;for (var i=0;i<oTable.rows.length;i++){var oRow=oTable.rows[i];if (oRow.cells.length<iIndex) continue;oCell=FCK.EditorDocument.createElement('TD');oCell.innerHTML=' ';var oBaseCell=oRow.cells[iIndex];if (oBaseCell){oRow.insertBefore(oCell,oBaseCell);}else{oRow.appendChild(oCell);};};};FCKTableHandler.DeleteColumns=function(){var oCell=FCKSelection.MoveToAncestorNode("TD");if (!oCell) return;var oTable=FCKTools.GetElementAscensor(oCell,'TABLE');var iIndex=oCell.cellIndex;for (var i=oTable.rows.length-1;i>=0;i--){var oRow=oTable.rows[i];if (iIndex==0&&oRow.cells.length==1){FCKTableHandler.DeleteRows(oRow);continue;};if (oRow.cells[iIndex]) oRow.removeChild(oRow.cells[iIndex]);};};FCKTableHandler.InsertCell=function(cell){var oCell=cell?cell:FCKSelection.MoveToAncestorNode("TD");if (!oCell) return;var oNewCell=FCK.EditorDocument.createElement("TD");oNewCell.innerHTML=" ";if (oCell.cellIndex==oCell.parentNode.cells.lenght-1){oCell.parentNode.appendChild(oNewCell);}else{oCell.parentNode.insertBefore(oNewCell,oCell.nextSibling);};return oNewCell;};FCKTableHandler.DeleteCell=function(cell){if (cell.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(cell,'TR'));return;};cell.parentNode.removeChild(cell);};FCKTableHandler.DeleteCells=function(){var aCells=FCKTableHandler.GetSelectedCells();for (var i=aCells.length-1;i>=0;i--){FCKTableHandler.DeleteCell(aCells[i]);};};FCKTableHandler.MergeCells=function(){var aCells=FCKTableHandler.GetSelectedCells();if (aCells.length<2) return;if (aCells[0].parentNode!=aCells[aCells.length-1].parentNode) return;var iColSpan=isNaN(aCells[0].colSpan)?1:aCells[0].colSpan;var sHtml='';for (var i=aCells.length-1;i>0;i--){iColSpan+=isNaN(aCells[i].colSpan)?1:aCells[i].colSpan;sHtml=aCells[i].innerHTML+sHtml;FCKTableHandler.DeleteCell(aCells[i]);};aCells[0].colSpan=iColSpan;aCells[0].innerHTML+=sHtml;};FCKTableHandler.SplitCell=function(){var aCells=FCKTableHandler.GetSelectedCells();if (aCells.length!=1) return;var aMap=this._CreateTableMap(aCells[0].parentNode.parentNode);var iCellIndex=FCKTableHandler._GetCellIndexSpan(aMap,aCells[0].parentNode.rowIndex,aCells[0]);var aCollCells=this._GetCollumnCells(aMap,iCellIndex);for (var i=0;i<aCollCells.length;i++){if (aCollCells[i]==aCells[0]){var oNewCell=this.InsertCell(aCells[0]);if (!isNaN(aCells[0].rowSpan)&&aCells[0].rowSpan>1) oNewCell.rowSpan=aCells[0].rowSpan;}else{if (isNaN(aCollCells[i].colSpan)) aCollCells[i].colSpan=2;else aCollCells[i].colSpan+=1;};};};FCKTableHandler._GetCellIndexSpan=function(tableMap,rowIndex,cell){if (tableMap.length<rowIndex+1) return;var oRow=tableMap[rowIndex];for (var c=0;c<oRow.length;c++){if (oRow[c]==cell) return c;};};FCKTableHandler._GetCollumnCells=function(tableMap,collumnIndex){var aCollCells=new Array();for (var r=0;r<tableMap.length;r++){var oCell=tableMap[r][collumnIndex];if (oCell&&(aCollCells.length==0||aCollCells[aCollCells.length-1]!=oCell)) aCollCells[aCollCells.length]=oCell;};return aCollCells;};FCKTableHandler._CreateTableMap=function(table){var aRows=table.rows;var r=-1;var aMap=new Array();for (var i=0;i<aRows.length;i++){r++;if (!aMap[r]) aMap[r]=new Array();var c=-1;for (var j=0;j<aRows[i].cells.length;j++){var oCell=aRows[i].cells[j];c++;while (aMap[r][c]) c++;var iColSpan=isNaN(oCell.colSpan)?1:oCell.colSpan;var iRowSpan=isNaN(oCell.rowSpan)?1:oCell.rowSpan;for (var rs=0;rs<iRowSpan;rs++){if (!aMap[r+rs]) aMap[r+rs]=new Array();for (var cs=0;cs<iColSpan;cs++){aMap[r+rs][c+cs]=aRows[i].cells[j];};};c+=iColSpan-1;};};return aMap;};FCKTableHandler.ClearRow=function(tr){var aCells=tr.cells;for (var i=0;i<aCells.length;i++){aCells[i].innerHTML=' ';};}
FCKTableHandler.GetSelectedCells=function(){var aCells=new Array();var oSelection=FCK.EditorWindow.getSelection();if (oSelection.rangeCount==1&&oSelection.anchorNode.nodeType==3){var oParent=FCKTools.GetElementAscensor(oSelection.anchorNode,'TD');if (oParent){aCells[0]=oParent;return aCells;};};for (var i=0;i<oSelection.rangeCount;i++){var oRange=oSelection.getRangeAt(i);var oCell=oRange.startContainer.childNodes[oRange.startOffset];if (oCell.tagName=='TD') aCells[aCells.length]=oCell;};return aCells;};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -