?? editor.js
字號:
?var Config={XHTML:'xhtml',UBB:'ubb',WYSIWYG:'wysiwyg',EnabledXhtml:true,EnabledUbb:true,ButWysiwyg:'可視化',ButXhtml:'xhtml',ButUbb:'MaxCode',ToolbarVisibility:true,FaceTip:true,Tag:'base|link|style|iframe|object|embed|applet|script|noscript|form|input|select|option|textarea|map|area|param',NotAllowHtmlTag:function(){return new RegExp('<\\/?(?:'+Config.Tag+')[^>]*?>','gi')},ParagraphTag:/^(?:div|p)$/i,NotAllowTag:function(){return new RegExp('^(?:'+Config.Tag+')$','i')},NotAllowAttr:/^(?:loop|start|tabindex|shape|contenteditable|type|_moz|on)/i,NotAllowAttrValue:/(?:apple|inherit|javascript:)/i,AllowSingleTag:/^(?:img|br|hr)$/i,NotInnerHTMLTag:/^(?:meta|param|base|style|img|br|hr|input|iframe|script)$/i};var cEditor={Name:Url.QS()['Name'],FrameName:Url.QS()['FrameName'],TMode:Url.QS()['TMode']||'html',DMode:Url.QS()['DMode']||Config.WYSIWYG,AllowHTML:Url.QS()['AllowHTML']!='false'?true:false,AllowUBB:Url.QS()['AllowUBB']!='false'?true:false,CSS:Url.QS()['CSS']||'',Selectable:Url.QS()['Selectable']!='false'?true:false,FirstRun:false,IsSwitch:false,FullScreenPrompt:Url.QS()['FullScreenPrompt']!='false'?true:false,ToolBarName:'ToolBar',EditorAreaName:'EditorArea',StatusBarName:'StatusBar',Id:Url.QS()['Id'],EditorObj:parent[Url.QS()['Id']],Editor:null,EditType:Config.WYSIWYG,TextField:null,_TextField:null,EditorType:null,EditorWindow:null,EditorArea:null,EditorIframe:null,Window:null,Document:null,TextArea:null,OriginType:'',OriginValue:'',TempValue:{first:'',second:'',type:''},MinHeight:300,StepHeight:100,SelectRange:null,TextRange:null,TextRangeStart:0,TextRangeEnd:0,FocusHTMLElement:null,GetEditor:function(){if(this.Editor)return this.Editor;this.Editor=parent.$(this.FrameName);return this.Editor;},Width:function(){return this.GetEditor().offsetWidth;},Height:function(){return this.GetEditor().offsetHeight;},Initialize:function(){var self=this;var tb=$(this.ToolBarName);var sb=$(this.StatusBarName);Toolbar.init(tb,sb);this.EditorWindow=this.GetEditor();Events.AttachEvent(document,'keypress',function(e){var num;if(e.keyCode==13)
num=self.EditorObj&&self.EditorObj.CloseWidget();else
return;if($EO(e).tagName.toLowerCase()=='textarea'&&!e.ctrlKey){if(num)Events.CancelAll(e);return;}
if(!num){self.UpdateTextField();if(self.EditorObj&&self.EditorObj.Submit){self.EditorObj.Submitting(true);self.EditorObj.Submit();}}
Events.CancelAll(e);});this.Resize();},StartEditor:function(){var html=this._TextField.value;if((this.DMode==Config.WYSIWYG||this.DMode==Config.XHTML)&&this.TMode==Config.UBB){html=UBB.ubbToXhtml(html);if(this.DMode==Config.XHTML)
html=UBB.imageHTMLUrlToSign(html);else
html=UBB.imageHTMLSignToUrl(html);this.OriginType=Config.XHTML;}
else if(this.DMode==Config.UBB&&this.TMode==Config.HTML){html=UBB.xhtmlToUbb(html);this.OriginType=Config.UBB;}
else{this.OriginType=this.TMode==Config.HTML?Config.XHTML:Config.UBB;}
this.OriginValue=html;this.TempValue={first:html,second:html,type:this.OriginType};this.DisplayTip();html=html||(Browser.IsIE?'':'<br>');this.CreateEditorArea(UBB.multimediaUbbToHtmlView(html));},CreateEditorArea:function(html){if(!this.EditorArea)this.EditorArea=$('EditorArea');while(this.EditorArea.childNodes.length>0)
this.EditorArea.removeChild(this.EditorArea.childNodes[0]);var oHtml=['<html>','<head>',(this.CSS?'<link rel="stylesheet" type="text/css" href="'+this.CSS+'" />':''),'<link rel="stylesheet" type="text/css" href="css/style.css" />','<script type="text/javascript">window.onload=function(){return true}</script>','</head>','<body class="maxcode-userenters">'+(Browser.IsIE?(html||''):(html||'<br>'))+'</body>','</html>'].join('');var oIframe=this.EditorIframe=oNode.CreateIframe(this.Name);oIframe.src='javascript:;';oIframe.frameBorder=0;oIframe.height='100%';oIframe.width='100%';this.EditorArea.appendChild(oIframe);this.Window=oIframe.contentWindow;var oDocument=this.Document=this.Window.document;Events.AttachEvent(this.Window,'error',function(){return true});this.Window.onerror=function(){return true};var SetEditor=function(){oDocument.open();oDocument.write(oHtml);oDocument.close();if(Browser.IsIE){oDocument.body.contentEditable=true;}
else{oDocument.designMode='on';}
if(!Browser.IsIELike){try{oDocument.execCommand('styleWithCSS',false,false);oDocument.execCommand('useCSS',false,true);}
catch(e){}}
cEditor.GetRange();cEditor.CreateComplete();};if(Browser.IsIE)
SetEditor();else
setTimeout(SetEditor,100);},CreateTextArea:function(text,type){var self=this;if(!this.EditorArea)this.EditorArea=$('EditorArea');this.EditorIframe=null;while(this.EditorArea.childNodes.length>0)
this.EditorArea.removeChild(this.EditorArea.childNodes[0]);var TextArea=this.TextArea=document.createElement('textarea');TextArea.style.border='0';TextArea.style.padding='0';TextArea.style.maring='0';TextArea.value=text;TextArea.onblur=function(){self.UpdateTextField();};this.EditorArea.appendChild(TextArea);},TextAreaBindEvent:function(){var self=this;function gtr(){self.GetTextRange()}
var t=this.TextArea;t.onkeyup=gtr;t.onpaste=gtr;t.onmouseup=gtr;this.SelectOneTextArea();},CreateComplete:function(){var self=this;if(Browser.IsIE){this.Document.onmouseup=function(e){self.GetRange();Toolbar.responseIE(e);};if(!Browser.IsIE56){Events.AttachEvent(this.Document,'keydown',function(e){self.GetRange();Toolbar.responseIE(e,true);},false,this.Window);}
this.Document.onkeyup=function(e){self.GetRange();self.FocusHTMLElement=null;};}
else{this.Document.addEventListener('mouseup',function(e){self.GetRange();Toolbar.responseGecko(e);},false);this.Document.addEventListener('keyup',function(e){self.GetRange();Toolbar.responseGecko(e,true);self.FocusHTMLElement=null;},false);this.Document.addEventListener('dblclick',function(e){self.GetRange();Toolbar.responseGecko(e);},false);}
Events.AttachEvent(this.Document,'mousedown',function(e){var obj=$EO(e);self.FocusHTMLElement=obj;},false,this.Window);Events.AttachEvent(window,'resize',function(){cEditor.Resize();});var keyEvent=function(e){if(Browser.IsIE&&e.keyCode==8){var selection=self.Document.selection;if(selection.type=='Control'){selection.clear();self.GetRange();Events.CancelAll(e);return;}}
if(e.keyCode==13){var num=self.EditorObj&&self.EditorObj.CloseWidget();if(Browser.IsIE&&!e.ctrlKey&&!e.altKey&&!e.shiftKey&&num==0){self.GetRange();Events.CancelAll(e);self.InsertContent('<br>');return;}
try{if(e.ctrlKey&&!num){if(self.EditorObj&&self.EditorObj.Submit){self.EditorObj.Submitting(true);self.EditorObj.Submit();};}
num&&Events.CancelAll(e);}
catch(e){}}
if(e.keyCode==116)self.UpdateTextField();}
if(Browser.IsOpera)Events.AttachEvent(this.Document,'keypress',keyEvent,false,this.Window);else Events.AttachEvent(this.Document,'keydown',keyEvent,false,this.Window);this.Window.onerror=function(){return true};Events.AttachEvent(this.Window,'error',function(e){Events.CancelAll(e);},this.Window);if(Browser.IsIE){var node=this.Document.body.lastChild;while(node&&node.nodeType!=3){node=node.lastChild;}
if(node){var value=node.nodeValue;var lastChar=value.substring(value.length-1);if(lastChar==' ')
node.nodeValue=value.substring(0,value.length-1);}}
setTimeout(function(){if(self.Selectable||self.IsSwitch)self.SelectOneEidtor();if(!self.FirstRun){self.FirstRun=true;if(self.AllowUBB&&!self.AllowHTML){Toolbar.ubbMode();}
if(!self.AllowUBB&&self.AllowHTML){Toolbar.xhtmlMode();}
if(self.DMode==Config.UBB&&self.AllowUBB){self.ChangeStateAndButton(Config.UBB);return;}
if(self.DMode==Config.XHTML&&self.AllowHTML){self.ChangeStateAndButton(Config.XHTML);return;}
if(self.DMode==Config.WYSIWYG){}}},100);},GetDocument:function(){try{return this.Window.document;}
catch(e){try{return window.frames[this.Name].window.document;}
catch(e){return null;}}},Focus:function(){if(!this.isWYSIWYG())return;try{if(Browser.IsIELike)
this.Document.body&&this.Document.body.focus();else
this.Window.focus();}
catch(e){}},SelectOne:function(node){if(!node)return;if(Browser.IsIE){try{var range=this.Document.selection.createRange();range.moveToElementText(node);range.setEndPoint('StartToEnd',range);range.select();}
catch(e){this.Document.body.focus();this.SelectOne(node);}}
else{if(!this.SelectRange)return;if(node.childNodes.length>0){this.SelectRange.selectAllChildren(node);this.SelectRange.collapseToEnd();}
else{try{this.SelectRange.selectNode(node);var range=this.SelectRange.getRangeAt(0);range.collapse(false);}
catch(e){}}
this.Focus();}
this.GetRange();},SelectOneEidtor:function(){this.SelectOne(this.Document.body);if(!Browser.IsIE){if(Browser.IsOpera)
this.Document.body.scrollTop=1000000;else
this.Window.scrollByLines(1000000);}},SelectOneTextArea:function(){var TextArea=this.TextArea;var value=TextArea.value;if(value!=''){if(Browser.IsIELike){var range=TextArea.createTextRange();range.text=value;range.collapse(false);range.select();}
else{TextArea.setSelectionRange(value.length,value.length);this.TextRangeStart=this.TextRangeEnd=value.length;}}
if(!Browser.IsIE){this.TextArea.scrollTop=1000000;}
TextArea.focus();},ShowToolbar:function(){this.HideToolbar(false);},HideToolbar:function(hidden){Config.ToolbarVisibility=hidden===false?true:false;hidden=hidden!==false?'none':'block';$(this.ToolBarName).style.display=hidden;$(this.StatusBarName).style.display=hidden;this.Resize();},Resize:function(){if(!this.EditorWindow)return;var width=this.EditorWindow.offsetWidth-4-10+'px';var height=this.EditorWindow.offsetHeight-$(this.ToolBarName).offsetHeight-$(this.StatusBarName).offsetHeight-4-8+'px';var editorArea=$(this.EditorAreaName);try{editorArea.style.width=width;this.EditorIframe&&(this.EditorIframe.style.width=width);}
catch(e){}
try{editorArea.style.height=height;this.EditorIframe&&(this.EditorIframe.style.height=height);}
catch(e){}
try{if(this.TextArea){this.TextArea.style.width='100%';this.TextArea.style.height=editorArea.offsetHeight-2+'px';}}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -