/*---------------------------------------------------------------------------*\ | Subject: 小小菜刀编辑器 HtmlEditor | | Version: 2.0 | |-----------------------------------------------------------------------------| | QQ: 275171 http://www.1715.cn | | blueidea.com ID: blgl0528 im286.com ID: blgl1984 | \*---------------------------------------------------------------------------*/ var CD = {}; CD.g = {}; CD.lang = { items : [ ["bold","0","19","0 0 0 2px;","","加粗"] ,["italic","20","20","0","","斜体"] ,["underline","40","20","0","","下划线"] ,["-","320","3","-1px 3px 0 4px","","间隔线"] ,["fontname","60","20","0 2px","","选择字体"] ,["fontsize","80","21","0 2px","","字体大小"] ,["forecolor","240","20","0 2px","","字体颜色"] ,["backcolor","260","20","0 2px","","背景颜色"] ,["-","320","3","-1px 3px 0 1px","","间隔线"] ,["picture","322","22","0","","插入图片"] ,["createlink","280","22","0","","增加链接"] ,["-","320","3","-1px 4px 0 2px","","间隔线"] ,["alignmode","427","21","0 4px 0 0","","对齐方式"] ,["serial","449","22","0 4px 0 0","","编号"] ,["indent","470","22","0 4px 0 0","","缩进"] ], font : [ ["宋体","宋体"] ,["黑体","黑体"] ,["楷体_GB2312","楷书"] ,["幼圆","幼圆"] ,["Arial","Arial"] ,["Arial Black","Arial Black"] ,["Times New Roman","Times New Roman"] ,["Verdana","Verdana"] ], size : [ [1,"10px;line-height:12px;height:12px;","小"] ,[2,"14px;line-height:16px;height:16px;","中"] ,[4,"16px;line-height:18px;height:18px;","大"] ,[5,"22px;line-height:24px;height:24px;","较大"] ,[6,"30px;line-height:32px;height:32px;","最大"] ], color : [ ['000000'],['993300'],['333300'],['003300'],['003366'],['000080'],['333399'],['333333'] ,['800000'],['FF6600'],['808000'],['008000'],['008080'],['0000FF'],['666699'],['808080'] ,['FF0000'],['FF9900'],['99CC00'],['339966'],['33CCCC'],['3366FF'],['800080'],['999999'] ,['FF00FF'],['FFCC00'],['FFFF00'],['00FF00'],['00FFFF'],['00CCFF'],['993366'],['C0C0C0'] ,['FF99CC'],['FFCC99'],['FFFF99'],['CCFFCC'],['CCFFFF'],['99CCFF'],['CC99FF'],['FFFFFF'] ], alignmode : [ ["justifyleft","100","20","-3px 0 0 0"," 左对齐"] ,["justifycenter","120","20","-3px 0 0 0"," 居中对齐"] ,["Justifyright","140","20","-3px 0 0 0"," 右对齐"] ], serial : [ ["insertorderedlist","160","20","-3px 0 0 0"," 数字编号"] ,["insertunorderedlist","180","20","-3px 0 0 0"," 项目编号"] ], indent : [ ["indent","220","20","-3px 0 0 0"," 向右缩进"] ,["outdent","200","20","-3px 0 0 0"," 向左缩进"] ] }; CD.$ = function(i, win) { try { return ( win || window ).document.getElementById(i); }catch( e ) {return null;} } CD.$$ = function(name, doc){ var doc = doc || document; return doc.createElement(name); }; CD.event = { add : function(el, event, listener) { if (el.addEventListener){ el.addEventListener(event, listener, false); } else if (el.attachEvent){ el.attachEvent('on' + event, listener); } }, remove : function(el, event, listener) { if (el.removeEventListener){ el.removeEventListener(event, listener, false); } else if (el.detachEvent){ el.detachEvent('on' + event, listener); } } }; CD.IniEditor = function(d) { CD.func.loadStyle(d.root+'/images/editor.css'); for(var i=0;i -1) browser = true;//IE浏览器 return browser; }, setOpacity : function(el, opacity) { if (CD.browser) { el.style.filter = (opacity == 100) ? "" : "gray() alpha(opacity=" + opacity + ")"; } else { el.style.opacity = (opacity == 100) ? "" : "0." + opacity.toString(); } }, ClickHandle : function(e){ var o = e.srcElement || e.target; if(o.id.indexOf('_editor_source')!=-1 || o.id.indexOf('_toolbar')!=-1 || !o.id) return false; var v = o.id.split('_');if(v[2]=="-" ||!v[2]) return false; var k =0; for (var i=0;i 1 ) || (u.indexOf(":\\") > 1)) ? "http://" + u : u; CD.func.LoadPos(id); CD.func.execCommand(id,"createlink",u); }, InsertImage : function(id){ var p = CD.$(id+"_picture").value; if(!p || p=="http://") return false; CD.func.LoadPos(id); CD.func.execCommand(id,"InsertImage",p); }, SavePos : function(id) { var win = CD.g[id].iframeWin; var doc = CD.g[id].iframeDoc; var sel = win.getSelection ? win.getSelection() : doc.selection; var range; try { if (sel.rangeCount > 0) { range = sel.getRangeAt(0); } else { range = sel.createRange ? sel.createRange() : doc.createRange(); } } catch(e) {} if (!range) { range = (CD.browser) ? doc.body.createTextRange() : doc.createRange(); } CD.g[id].selection = sel; CD.g[id].range = range; }, LoadPos : function(id){ if(CD.browser && CD.g[id].range){ CD.g[id].range.select(); CD.g[id].range = null; } }, fHide : function(id,k){ for(var i=0;i"; switch(t){ case "fontname": for(var i=0;i"; d += CD.lang["font"][i][1]+""; } break; case "fontsize": for(var i=0;i"; d += CD.lang["size"][i][2]+""; } break; case "alignmode": for(var i=0;i"; d += "
"; d += CD.lang["alignmode"][i][4]+""; } break; case "serial": for(var i=0;i"; d += "
"; d += CD.lang["serial"][i][4]+""; } break; case "indent": for(var i=0;i"; d += "
"; d += CD.lang["indent"][i][4]+""; } break; case "picture" : d += "
"; d += "
选择上传:"; d += ""; d += "
"; d += "
网络地址:
"; d += "
"; d += ""; d += ""; d += "
"; d += "
"; break; case "createlink": d += "
"; d += "
请输入链接的目标地址:
"; d += "
"; d += "
"; d += ""; d += ""; d += "
"; d += "
"; break; default: if(t!="forecolor" && t!="backcolor") break; d += "
"; for(var i=0;i 
"; d += ""; } d += ""; break; } d += ""; return d; }, CodeEditor : function(id,r){ var o = CD.g[id]; if(o.codeMode){ for(var i = 0; i < CD.lang["items"].length; i++){ var p = CD.lang["items"][i][0]; if((r==true && p=="picture") || p!="picture") CD.$(id+"_"+i+"_"+p).style.display = 'none'; } CD.$(id+"_editor_source").innerHTML = "预览»"; CD.$(id+"_editor_source").title = "预览效果"; if(o.filterMode){ o.newTextarea.value = CD.func.HtmlToText(o.iframeDoc.body.innerHTML); }else{ o.newTextarea.value = o.iframeDoc.body.innerHTML; } o.iframe.style.display = 'none'; o.newTextarea.style.display = 'block'; o.codeMode = false; }else{ for(var i = 0; i < CD.lang["items"].length; i++){ var p = CD.lang["items"][i][0]; if((r==true && p=="picture") || p!="picture") CD.$(id+"_"+i+"_"+p).style.display = 'block'; } CD.$(id+"_editor_source").innerHTML = "<HTML>"; CD.$(id+"_editor_source").title = "编辑HTML源码"; o.iframeDoc.body.innerHTML = o.newTextarea.value; o.iframe.style.display = 'block'; o.newTextarea.style.display = 'none'; o.codeMode = true; } }, getData : function(id,filterMode) { var data; if (CD.g[id].codeMode) { if(filterMode) { data = CD.func.HtmlToText(CD.g[id].iframeDoc.body.innerHTML); }else{ data = CD.g[id].iframeDoc.body.innerHTML; } } else { data = CD.g[id].newTextarea.value; } return data; }, setData : function(id) { var data = CD.func.getData(id,CD.g[id].filterMode); CD.g[id].srcTextarea.value = data; }, Reset : function(id){ CD.g[id].iframeDoc.body.innerHTML = ""; CD.g[id].newTextarea.value = ""; CD.g[id].srcTextarea.value = ""; }, loadStyle : function(path) { var link = CD.$$('link'); link.setAttribute('type', 'text/css'); link.setAttribute('rel', 'stylesheet'); link.setAttribute('href', path); document.getElementsByTagName("head")[0].appendChild(link); }, resize : function(id, width, height) { var obj = CD.g[id]; if (width <= obj.minWidth || height <= obj.minHeight) return; obj.container.style.width = width + 'px'; obj.container.style.height = height + 'px'; obj.formDiv.style.height = height + 'px'; var diff = obj.toolbarDiv.offsetHeight; var formBorder = obj.formDiv.offsetHeight - obj.formDiv.clientHeight; height -= diff + formBorder; if (CD.browser) { var border = obj.container.offsetWidth - obj.container.clientWidth; if (document.compatMode != "CSS1Compat") { height -= border; width -= border; obj.formDiv.style.height = (height + formBorder) + 'px'; } else { obj.formDiv.style.height = height + 'px'; } obj.iframe.style.height = height + 'px'; obj.newTextarea.style.width = (width - border) + 'px'; obj.newTextarea.style.height = (height - formBorder) + 'px'; } else { obj.formDiv.style.height = height + 'px'; obj.iframe.style.height = height + 'px'; obj.newTextarea.style.width = '100%'; obj.newTextarea.style.height = height + 'px'; } }, HtmlToText : function(w){ var res = w.replace( /\n/ig, "" ); res = res.replace( /(<\/div>)|(<\/p>)|()/ig, "\n" ); return res; } } CD.browser = CD.func.getBrowser(); CD.toolbar = { create : function(id) { var toolbar = CD.$$('div'); var tool = "
"; for (var i = 0; i < CD.lang["items"].length; i++) { if(CD.lang["items"][i][0] == "picture" && CD.g[id].use != true) continue; var p = CD.func.toolprompt(id,i,CD.lang["items"][i][0]); tool += "
"; } tool += "