BVB Source Codes

V2.0 small chopper editor Show editor.js Source code

Return Download V2.0 small chopper editor: download editor.js Source code - Download V2.0 small chopper editor Source code - Type:.js
  1. /*---------------------------------------------------------------------------*\
  2. |  Subject:       小小菜刀编辑器 HtmlEditor                                   |
  3. |  Version:       2.0                                                         |
  4. |-----------------------------------------------------------------------------|
  5. |  QQ: 275171   http://www.1715.cn                                            |
  6. |  blueidea.com ID: blgl0528 im286.com ID: blgl1984                           |
  7. \*---------------------------------------------------------------------------*/
  8.  
  9. var CD = {};
  10. CD.g = {};
  11. CD.lang = {
  12.     items : [
  13.                  ["bold","0","19","0 0 0 2px;","","加粗"]
  14.                 ,["italic","20","20","0","","斜体"]
  15.                 ,["underline","40","20","0","","下划线"]
  16.                 ,["-","320","3","-1px 3px 0 4px","","间隔线"]
  17.                 ,["fontname","60","20","0 2px","","选择字体"]
  18.                 ,["fontsize","80","21","0 2px","","字体大小"]
  19.                 ,["forecolor","240","20","0 2px","","字体颜色"]
  20.                 ,["backcolor","260","20","0 2px","","背景颜色"]
  21.                 ,["-","320","3","-1px 3px 0 1px","","间隔线"]
  22.                 ,["picture","322","22","0","","插入图片"]
  23.                 ,["createlink","280","22","0","","增加链接"]
  24.                 ,["-","320","3","-1px 4px 0 2px","","间隔线"]
  25.                 ,["alignmode","427","21","0 4px 0 0","","对齐方式"]
  26.                 ,["serial","449","22","0 4px 0 0","","编号"]
  27.                 ,["indent","470","22","0 4px 0 0","","缩进"]
  28.     ],
  29.     font : [
  30.                  ["宋体","宋体"]
  31.                 ,["黑体","黑体"]
  32.                 ,["楷体_GB2312","楷书"]
  33.                 ,["幼圆","幼圆"]
  34.                 ,["Arial","Arial"]
  35.                 ,["Arial Black","Arial Black"]
  36.                 ,["Times New Roman","Times New Roman"]
  37.                 ,["Verdana","Verdana"]
  38.     ],
  39.     size : [
  40.                  [1,"10px;line-height:12px;height:12px;","小"]
  41.                 ,[2,"14px;line-height:16px;height:16px;","中"]
  42.                 ,[4,"16px;line-height:18px;height:18px;","大"]
  43.                 ,[5,"22px;line-height:24px;height:24px;","较大"]
  44.                 ,[6,"30px;line-height:32px;height:32px;","最大"]
  45.     ],
  46.         color : [
  47.                  ['000000'],['993300'],['333300'],['003300'],['003366'],['000080'],['333399'],['333333']
  48.                 ,['800000'],['FF6600'],['808000'],['008000'],['008080'],['0000FF'],['666699'],['808080']
  49.                 ,['FF0000'],['FF9900'],['99CC00'],['339966'],['33CCCC'],['3366FF'],['800080'],['999999']
  50.                 ,['FF00FF'],['FFCC00'],['FFFF00'],['00FF00'],['00FFFF'],['00CCFF'],['993366'],['C0C0C0']
  51.                 ,['FF99CC'],['FFCC99'],['FFFF99'],['CCFFCC'],['CCFFFF'],['99CCFF'],['CC99FF'],['FFFFFF']
  52.         ],
  53.         alignmode : [
  54.                  ["justifyleft","100","20","-3px 0 0 0"," 左对齐"]
  55.                 ,["justifycenter","120","20","-3px 0 0 0"," 居中对齐"]
  56.                 ,["Justifyright","140","20","-3px 0 0 0"," 右对齐"]
  57.         ],
  58.         serial : [
  59.                  ["insertorderedlist","160","20","-3px 0 0 0"," 数字编号"]
  60.                 ,["insertunorderedlist","180","20","-3px 0 0 0"," 项目编号"]
  61.         ],
  62.         indent : [
  63.                  ["indent","220","20","-3px 0 0 0"," 向右缩进"]
  64.                 ,["outdent","200","20","-3px 0 0 0"," 向左缩进"]
  65.         ]
  66. };
  67. CD.$ = function(i, win) {
  68.         try {
  69.                 return ( win || window ).document.getElementById(i);
  70.         }catch( e ) {return null;}
  71. }
  72. CD.$$ = function(name, doc){
  73.     var doc = doc || document;
  74.     return doc.createElement(name);
  75. };
  76. CD.event = {
  77.     add : function(el, event, listener) {
  78.         if (el.addEventListener){
  79.             el.addEventListener(event, listener, false);
  80.         } else if (el.attachEvent){
  81.             el.attachEvent('on' + event, listener);
  82.         }
  83.     },
  84.     remove : function(el, event, listener) {
  85.         if (el.removeEventListener){
  86.             el.removeEventListener(event, listener, false);
  87.         } else if (el.detachEvent){
  88.             el.detachEvent('on' + event, listener);
  89.         }
  90.     }
  91. };
  92. CD.IniEditor = function(d) {
  93.         CD.func.loadStyle(d.root+'/images/editor.css');
  94.         for(var i=0;i<d.id.length;i++){
  95.                 var config       = {};
  96.                 config.id         = d.id[i];
  97.                 config.use        = d.use[i];
  98.                 config.root       = d.root;
  99.                 config.codeMode   = true;
  100.                 config.filterMode = false;//开启过滤
  101.                 CD.g[d.id[i]]    = config;//保存数据
  102.                 CD.event.add(window, 'load', new Function('CD.create("'+d.id[i]+'")'));
  103.         }
  104. };
  105. CD.create = function(id, mode) {
  106.         var width = CD.$(id).style.width;
  107.     var height = CD.$(id).style.height;
  108.     var container = CD.$$('div');
  109.         container.className = 'editor_container';
  110.     container.style.width = width;
  111.     container.style.height = height;
  112.     CD.$(id).parentNode.insertBefore(container,CD.$(id));
  113.         var toolbarDiv = CD.toolbar.create(id);
  114.     container.appendChild(toolbarDiv);
  115.  
  116.     var iframe = CD.$$('iframe');
  117.     iframe.className = 'editor_iframe';
  118.     iframe.setAttribute("frameBorder", "0");
  119.     var newTextarea = CD.$$('textarea');
  120.     newTextarea.className = 'editor_textarea';
  121.     newTextarea.style.display = 'none';
  122.        
  123.     var formDiv = CD.$$('div');
  124.     formDiv.className = 'editor_form';
  125.     formDiv.appendChild(iframe);
  126.     formDiv.appendChild(newTextarea);
  127.     container.appendChild(formDiv);
  128.  
  129.     var hideDiv = CD.$$('div');
  130.     hideDiv.style.display = 'none';
  131.     var maskDiv = CD.$$('div');
  132.     maskDiv.className = 'editor_mask';
  133.     CD.func.setOpacity(maskDiv, 50);
  134.     document.body.appendChild(hideDiv);
  135.     document.body.appendChild(maskDiv);
  136.     CD.$(id).style.display = "none";
  137.        
  138.         var iframeWin = iframe.contentWindow;
  139.     var iframeDoc = CD.func.getIframeDoc(iframe);
  140.     iframeDoc.designMode = "On";
  141.     var html = CD.func.getFullHtml(id);
  142.     iframeDoc.open();
  143.     iframeDoc.write(html);
  144.     iframeDoc.close();
  145.     if (!CD.g[id].codeMode) {
  146.         newTextarea.value = CD.$(id).value;
  147.         newTextarea.style.display = 'block';
  148.         iframe.style.display = 'none';
  149.     }
  150.  
  151.         var form = CD.$(id).parentNode;
  152.         while (form != null && form.tagName != 'FORM') { form = form.parentNode; }
  153.         if (form != null && form.tagName == 'FORM') {
  154.                 CD.event.add(form, 'submit', new Function('CD.func.setData("'+id+'")'));
  155.                 CD.event.add(form, 'reset', new Function('CD.func.Reset("'+id+'")'));
  156.         }
  157.  
  158.     CD.g[id].container = container;
  159.     CD.g[id].toolbarDiv = toolbarDiv;
  160.     CD.g[id].formDiv = formDiv;
  161.     CD.g[id].iframe = iframe;
  162.     CD.g[id].newTextarea = newTextarea;
  163.     CD.g[id].srcTextarea = CD.$(id);
  164.     CD.g[id].hideDiv = hideDiv;
  165.     CD.g[id].maskDiv = maskDiv;
  166.     CD.g[id].iframeWin = iframeWin;
  167.     CD.g[id].iframeDoc = iframeDoc;
  168.     width = container.offsetWidth;
  169.     height = container.offsetHeight;
  170.     CD.g[id].width = width + 'px';
  171.     CD.g[id].height = height + 'px';
  172.     CD.func.resize(id,width,height);
  173.     if(CD.$(id).value) iframeDoc.body.innerHTML = CD.$(id).value;
  174. }
  175.  
  176. CD.func = {
  177.     getIframeDoc : function(iframe) {
  178.         var win = iframe.contentWindow;
  179.         var doc = null;
  180.         if (iframe.contentDocument) {
  181.             doc = iframe.contentDocument;
  182.         } else {
  183.             doc = win.document;
  184.         }
  185.         return doc;
  186.     },
  187.     getFullHtml : function(id) {
  188.         var html = '<html>';
  189.         html += '<head>';
  190.         html += '<title>editor</title>';
  191.                 html += '<style type="text/css">';
  192.         html += 'body {';
  193.         html += '    font-family: Verdana;';
  194.         html += '    font-size:12px;';
  195.         html += '    margin:2px;';
  196.         html += '    background-color:#ffffff;';
  197.         html += '}</style>';
  198.         html += '</head>';
  199.         html += '<body>';
  200.         html += '</body>';
  201.         html += '</html>';
  202.         return html;
  203.     },
  204.     getBrowser : function() {
  205.         var browser = false;
  206.         var ua = navigator.userAgent.toLowerCase();
  207.         if (ua.indexOf("msie") > -1) browser = true;//IE浏览器
  208.         return browser;
  209.     },
  210.     setOpacity : function(el, opacity) {
  211.         if (CD.browser) {
  212.             el.style.filter = (opacity == 100) ? "" : "gray() alpha(opacity=" + opacity + ")";
  213.         } else {
  214.             el.style.opacity = (opacity == 100) ? "" : "0." + opacity.toString();
  215.         }
  216.     },
  217.         ClickHandle : function(e){     
  218.                 var o = e.srcElement || e.target;
  219.                 if(o.id.indexOf('_editor_source')!=-1 || o.id.indexOf('_toolbar')!=-1 || !o.id) return false;
  220.                 var v  = o.id.split('_');if(v[2]=="-" ||!v[2]) return false;
  221.                 var k  =0;
  222.                 for (var i=0;i<CD.lang["items"].length;i++){
  223.                         k = i;if(CD.lang["items"][i][0]==v[2]) break;
  224.                 }
  225.                 var t = o.getAttribute("para") ? o.getAttribute("para") : o.parentNode.getAttribute("para");
  226.                 CD.func.fHide(v[0],k);//关闭所有下拉菜单
  227.                 if(o.type !="button") CD.func.SavePos(v[0]);//保存光标
  228.                 if("bold,italic,underline,-".indexOf(v[2])!=-1){
  229.                         CD.func.execCommand(v[0],v[2],t);
  230.                 }else{
  231.                         if(!t){
  232.                                 CD.func.fDisp(v[0]+"_"+k+"_prompt");//显示下拉
  233.                         }else if(t=="createlink"){
  234.                                 CD.func.CreateLink(v[0]);
  235.                         }else if(t=="InsertImage"){
  236.                                 CD.func.InsertImage(v[0]);
  237.                         }else{
  238.                                 CD.func.execCommand(v[0],v[2],t);
  239.                         }
  240.                 }
  241.         },
  242.     execCommand : function(id, cmd, value) {
  243.                 if("alignmode serial indent".indexOf(cmd)!=-1){
  244.                         cmd = value;value = false;
  245.                 }
  246.                 CD.func.fHide(id);
  247.                 try {
  248.                         CD.g[id].iframeDoc.execCommand(cmd,false,!value ? false : value);
  249.         } catch(e) {}
  250.     },
  251.         CreateLink : function(id){
  252.                 var u = CD.$(id+"_url").value;
  253.                 if(!u || u=="http://") return false;
  254.                 u = !(( u.indexOf("://") > 1 ) || (u.indexOf(":\\") > 1)) ? "http://" + u : u;
  255.                 CD.func.LoadPos(id);
  256.                 CD.func.execCommand(id,"createlink",u);
  257.         },
  258.         InsertImage : function(id){
  259.                 var p = CD.$(id+"_picture").value;
  260.                 if(!p || p=="http://") return false;
  261.                 CD.func.LoadPos(id);
  262.                 CD.func.execCommand(id,"InsertImage",p);
  263.         },
  264.     SavePos : function(id) {
  265.         var win = CD.g[id].iframeWin;
  266.         var doc = CD.g[id].iframeDoc;
  267.         var sel = win.getSelection ? win.getSelection() : doc.selection;
  268.         var range;
  269.         try {
  270.             if (sel.rangeCount > 0) {
  271.                 range = sel.getRangeAt(0);
  272.             } else {
  273.                 range = sel.createRange ? sel.createRange() : doc.createRange();
  274.             }
  275.         } catch(e) {}
  276.         if (!range) {
  277.             range = (CD.browser) ? doc.body.createTextRange() : doc.createRange();
  278.         }
  279.         CD.g[id].selection = sel;
  280.         CD.g[id].range = range;
  281.     },
  282.         LoadPos : function(id){
  283.                 if(CD.browser && CD.g[id].range){
  284.                         CD.g[id].range.select();
  285.                         CD.g[id].range = null;
  286.                 }
  287.         },
  288.         fHide : function(id,k){
  289.                 for(var i=0;i<CD.lang["items"].length;i++){
  290.                         if(CD.lang["items"][i][0] == "picture" && CD.g[id].use != true) continue;
  291.                         if("bold,italic,underline,-".indexOf(CD.lang["items"][i][0])==-1 && i!=k) CD.$(id+"_"+i+"_prompt").style.display = 'none';
  292.                 }
  293.         },
  294.         fDisp : function(id){
  295.                 CD.$(id).style.display = CD.$(id).style.display != 'block' ? "block" : "none"; 
  296.         },
  297.         BMouse : function(obj, flag){
  298.                 if (obj.title == "间隔线") return;
  299.                 obj.className = (flag == 0 ? "editor_btn_mover" : flag == 1 ? "editor_btn_mdown" : "editor_btn");
  300.         },
  301.         Mcolor : function(obj,t){
  302.                 obj.className = !t ? "editor_menu_mover" : "editor_menu";
  303.         },
  304.         toolprompt : function(id,k,t){
  305.                 if("bold,italic,underline,-".indexOf(t)!=-1) return "";
  306.                 var d = "<div unselectable=on  id='"+id+"_"+k+"_prompt' class='editor_prompt'>";
  307.                 switch(t){
  308.                     case "fontname":
  309.                                 for(var i=0;i<CD.lang["font"].length;i++){
  310.                                         d += "<div class='editor_menu' title='"+CD.lang["font"][i][1]+"' onmouseover='CD.func.Mcolor(this)' onmouseout='CD.func.Mcolor(this,1)' ";
  311.                                         d += " unselectable=on style='width:100px;font:normal 12px "+CD.lang["font"][i][0]+"' ";
  312.                                         d += " id='"+id+"_"+i+"_"+t+"' para='"+CD.lang["font"][i][0]+"'>";
  313.                                         d += CD.lang["font"][i][1]+"</div>";
  314.                                 }
  315.                         break;
  316.                         case "fontsize":
  317.                                 for(var i=0;i<CD.lang["size"].length;i++){
  318.                                         d += "<div class='editor_menu' title='"+CD.lang["size"][i][2]+"' onmouseover='CD.func.Mcolor(this)' onmouseout='CD.func.Mcolor(this,1)' ";
  319.                                         d += " unselectable=on style='width:100px;font-size:"+CD.lang["size"][i][1]+"' ";
  320.                                         d += " id='"+id+"_"+i+"_"+t+"' para='"+CD.lang["size"][i][0]+"'>";
  321.                                         d += CD.lang["size"][i][2]+"</div>";
  322.                                 }
  323.                         break;
  324.                         case "alignmode":
  325.                                 for(var i=0;i<CD.lang["alignmode"].length;i++){
  326.                                         d += "<div style='width:100px;' class='editor_menu' onmouseover='CD.func.Mcolor(this)' onmouseout='CD.func.Mcolor(this,1)' ";
  327.                                         d += " unselectable='on' id='"+id+"_"+i+"_"+t+"' para='"+CD.lang["alignmode"][i][0]+"'>";
  328.                                         d += "  <div unselectable='on' style='background:url("+CD.g[id].root+"images/editoricon.gif) -"+CD.lang["alignmode"][i][1]+"px 0;";
  329.                                         d += "width:20px;height:17px;float:left;margin:"+CD.lang["alignmode"][i][3]+";' title='"+CD.lang["alignmode"][i][4]+"' ";
  330.                                         d += " id='"+id+"_"+i+"_"+t+"' para='"+CD.lang["alignmode"][i][0]+"'></div>";
  331.                                         d += CD.lang["alignmode"][i][4]+"</div>";
  332.                                 }
  333.                         break;
  334.                         case "serial":
  335.                            for(var i=0;i<CD.lang["serial"].length;i++){
  336.                                         d += "<div style='width:100px;' class='editor_menu' onmouseover='CD.func.Mcolor(this)' onmouseout='CD.func.Mcolor(this,1)' ";
  337.                                         d += " unselectable='on'  id='"+id+"_"+i+"_"+t+"' para='"+CD.lang["serial"][i][0]+"'>";
  338.                                         d += "  <div unselectable='on' style='background:url("+CD.g[id].root+"images/editoricon.gif) -"+CD.lang["serial"][i][1]+"px 0;";
  339.                                         d += "width:20px;height:17px;float:left;margin:"+CD.lang["serial"][i][3]+";' title='"+CD.lang["serial"][i][4]+"' ";
  340.                                         d += " id='"+id+"_"+i+"_"+t+"' para='"+CD.lang["serial"][i][0]+"' ></div>";
  341.                                         d += CD.lang["serial"][i][4]+"</div>";
  342.                            }
  343.                         break;
  344.                         case "indent":
  345.                            for(var i=0;i<CD.lang["indent"].length;i++){
  346.                                         d += "<div style='width:100px;' class='editor_menu' onmouseover='CD.func.Mcolor(this)' onmouseout='CD.func.Mcolor(this,1)' ";
  347.                                         d += " unselectable='on' id='"+id+"_"+i+"_"+t+"' para='"+CD.lang["indent"][i][0]+"'>";
  348.                                         d += "  <div unselectable='on' style='background:url("+CD.g[id].root+"images/editoricon.gif) -"+CD.lang["indent"][i][1]+"px 0;";
  349.                                         d += "width:20px;height:17px;float:left;margin:"+CD.lang["indent"][i][3]+";' title='"+CD.lang["indent"][i][4]+"' ";
  350.                                         d += " id='"+id+"_"+i+"_"+t+"' para='"+CD.lang["indent"][i][0]+"'></div>";
  351.                                         d += CD.lang["indent"][i][4]+"</div>";
  352.                            }
  353.                         break;
  354.                         case "picture" :
  355.                            d += "<div unselectable='on' style='width:325px;margin:8px 10px;'>";
  356.                            d += "  <div unselectable='on'>选择上传:";
  357.                            d += "<iframe frameborder='0' scrolling='no' src='"+CD.g[id].root+"upload.php?id="+id+"_picture' style='width:260px;height:25px;'></iframe>";
  358.                            d += "</div>";
  359.                            d += "  <div>网络地址:<input type='text' name='"+id+"_picture' id='"+id+"_picture' value='http://' class='editor_picture'></div>";
  360.                            d += "<div unselectable='on' style='margin-top:5px;padding-left:60px;'>";
  361.                            d += "<input id='"+id+"_link_"+t+"' para='InsertImage' type='button' value='立即插入' style='margin-left:2px;width:70px;'>";
  362.                            d += "<input type='button' value='取消' style='margin-left:2px;' onclick='CD.func.fHide(\""+id+"\");'>";
  363.                            d += "</div>";
  364.                            d += "</div>";
  365.                         break;
  366.                         case "createlink":
  367.                            d += "<div unselectable='on' style='width:200px;margin:8px 10px;'>";
  368.                            d += "<div unselectable='on'>请输入链接的目标地址:</div>";
  369.                            d += "<div unselectable='on'><input id='"+id+"_url' type='text' class='editor_txt' value='http://' /></div>";
  370.                            d += "<div unselectable='on' style='margin-top:5px;padding-left:50px;'>";
  371.                            d += "<input id='"+id+"_link_"+t+"' para='createlink' type='button' value='确定' style='margin-left:2px;'>";
  372.                            d += "<input type='button' value='取消' style='margin-left:2px;' onclick='CD.func.fHide(\""+id+"\");'>";
  373.                            d += "</div>";
  374.                            d += "</div>";
  375.                         break;
  376.                         default:
  377.                             if(t!="forecolor" && t!="backcolor") break;
  378.                                 d += "<div style='width:160px;'>";
  379.                                 for(var i=0;i<CD.lang["color"].length;i++){
  380.                                         d += "<div class='editor_menu' style='font-size:1px;float:left;width:14px;height:14px;' title='#"+CD.lang["color"][i]+"' unselectable='on' ";
  381.                                         d += " onmouseover='CD.func.Mcolor(this)' onmouseout='CD.func.Mcolor(this,1)' >";
  382.                                         d += "  <div style='border:1px solid #a6a6a6;width:12px;height:12px;background:#"+CD.lang["color"][i]+"' unselectable='on' ";
  383.                                         d += " id='"+id+"_"+i+"_"+t+"' para='#"+CD.lang["color"][i]+"'>&nbsp;</div>";
  384.                                         d += "</div>";
  385.                                 }
  386.                                 d += "</div>";
  387.                         break;
  388.                 }
  389.                 d += "</div>";
  390.                 return d;
  391.         },
  392.         CodeEditor : function(id,r){
  393.                 var o = CD.g[id];
  394.                 if(o.codeMode){
  395.                         for(var i = 0; i < CD.lang["items"].length; i++){
  396.                             var p = CD.lang["items"][i][0];
  397.                                 if((r==true && p=="picture") ||  p!="picture") CD.$(id+"_"+i+"_"+p).style.display = 'none';    
  398.                         }
  399.                         CD.$(id+"_editor_source").innerHTML = "预览<b>&#187;</b>";
  400.                         CD.$(id+"_editor_source").title     = "预览效果";
  401.                         if(o.filterMode){
  402.                                 o.newTextarea.value = CD.func.HtmlToText(o.iframeDoc.body.innerHTML);
  403.                         }else{
  404.                                 o.newTextarea.value = o.iframeDoc.body.innerHTML;
  405.                         }
  406.                         o.iframe.style.display = 'none';
  407.                         o.newTextarea.style.display = 'block';
  408.                         o.codeMode = false;
  409.                 }else{
  410.                         for(var i = 0; i < CD.lang["items"].length; i++){
  411.                             var p = CD.lang["items"][i][0];
  412.                                 if((r==true && p=="picture") ||  p!="picture") CD.$(id+"_"+i+"_"+p).style.display = 'block';   
  413.                         }
  414.                         CD.$(id+"_editor_source").innerHTML = "&lt;HTML&gt;";
  415.                         CD.$(id+"_editor_source").title     = "编辑HTML源码";
  416.        
  417.                         o.iframeDoc.body.innerHTML = o.newTextarea.value;
  418.                         o.iframe.style.display = 'block';
  419.                         o.newTextarea.style.display = 'none';
  420.                         o.codeMode = true;
  421.                 }
  422.         },
  423.     getData : function(id,filterMode) {
  424.         var data;
  425.         if (CD.g[id].codeMode) {
  426.             if(filterMode) {
  427.                 data = CD.func.HtmlToText(CD.g[id].iframeDoc.body.innerHTML);
  428.             }else{
  429.                 data = CD.g[id].iframeDoc.body.innerHTML;
  430.             }
  431.         } else {
  432.             data = CD.g[id].newTextarea.value;
  433.         }
  434.         return data;
  435.     },
  436.     setData : function(id) {
  437.                 var data = CD.func.getData(id,CD.g[id].filterMode);
  438.                 CD.g[id].srcTextarea.value = data;
  439.     },
  440.         Reset : function(id){
  441.             CD.g[id].iframeDoc.body.innerHTML = "";
  442.                 CD.g[id].newTextarea.value = "";
  443.                 CD.g[id].srcTextarea.value = "";
  444.         },
  445.     loadStyle : function(path) {
  446.         var link = CD.$$('link');
  447.         link.setAttribute('type', 'text/css');
  448.         link.setAttribute('rel', 'stylesheet');
  449.         link.setAttribute('href', path);
  450.         document.getElementsByTagName("head")[0].appendChild(link);
  451.     },
  452.     resize : function(id, width, height) {
  453.                 var obj = CD.g[id];
  454.         if (width <= obj.minWidth || height <= obj.minHeight) return;
  455.         obj.container.style.width = width + 'px';
  456.         obj.container.style.height = height + 'px';
  457.         obj.formDiv.style.height = height + 'px';
  458.                 var diff = obj.toolbarDiv.offsetHeight;
  459.         var formBorder = obj.formDiv.offsetHeight - obj.formDiv.clientHeight;
  460.         height -= diff + formBorder;
  461.         if (CD.browser) {
  462.             var border = obj.container.offsetWidth - obj.container.clientWidth;
  463.             if (document.compatMode != "CSS1Compat") {
  464.                 height -= border;
  465.                 width -= border;
  466.                 obj.formDiv.style.height = (height + formBorder) + 'px';
  467.             } else {
  468.                 obj.formDiv.style.height = height + 'px';
  469.             }
  470.             obj.iframe.style.height = height + 'px';
  471.             obj.newTextarea.style.width = (width - border) + 'px';
  472.             obj.newTextarea.style.height = (height - formBorder) + 'px';
  473.         } else {
  474.             obj.formDiv.style.height = height + 'px';
  475.             obj.iframe.style.height = height + 'px';
  476.             obj.newTextarea.style.width = '100%';
  477.             obj.newTextarea.style.height = height + 'px';
  478.         }
  479.     },
  480.         HtmlToText : function(w){
  481.                 var res = w.replace( /\n/ig, "" );
  482.                 res = res.replace( /(<\/div>)|(<\/p>)|(<br\/?>)/ig, "\n" );
  483.                 return res;
  484.         }
  485. }
  486. CD.browser = CD.func.getBrowser();
  487. CD.toolbar = {
  488.     create : function(id) {
  489.                 var toolbar = CD.$$('div');    
  490.                 var tool = "<div id='"+id+"_toolbar' unselectable='on' class='editor_toolbar'>";
  491.                 for (var i = 0; i < CD.lang["items"].length; i++) {
  492.                         if(CD.lang["items"][i][0] == "picture" && CD.g[id].use != true) continue;
  493.                         var p = CD.func.toolprompt(id,i,CD.lang["items"][i][0]);
  494.                         tool += "<div id="+id+"_"+i+"_"+CD.lang["items"][i][0]+" style='";
  495.                         tool += "background:url("+CD.g[id].root+"images/editoricon.gif) -"+CD.lang["items"][i][1]+"px 0;width:"+CD.lang["items"][i][2]+"px;";
  496.                         tool += "' class='editor_btn' unselectable='on' title="+CD.lang["items"][i][5];
  497.                         tool += " onmousedown=CD.func.BMouse(this,1) onmouseover=CD.func.BMouse(this,0) onmouseout=CD.func.BMouse(this,2) onmouseup=CD.func.BMouse(this,0)";
  498.                         tool += ">"+p+"</div>";
  499.                 }
  500.                 tool += "<div id='"+id+"_editor_source' class=editor_abtn onclick='CD.func.CodeEditor(\""+id+"\","+CD.g[id].use+");' ";
  501.                 tool += " unselectable='on' title='编辑HTML源码'>&lt;HTML&gt;</div>";
  502.                 tool += "</div>";
  503.                 toolbar.innerHTML = tool;
  504.                
  505.                 CD.event.add(toolbar, 'click',CD.func.ClickHandle);//监听toolbar
  506.                 return toolbar;
  507.     }
  508. };
downloadeditor.js Source code - Download V2.0 small chopper editor Source code
Related Source Codes/Software:
V1.2.0518 hi5360 phones belonging to query the.net version - Adopt cs file, the program without having to compi... 2016-09-15
Data import and export Excel - Export data: is the data stored in CSV format Exce... 2016-09-15
Toolxp.NET play games. Net2.0 Edition - 2009.3.14 update 2016-09-15
Amoy Gardens in wenling P2P free thief v2.1 - Program description: 2016-09-15
Merlin middle school campus network - 1, full admin site. Every piece of information o... 2016-09-15
Fetion interface PHP version (free texting) v1.2 - Put on a letter is always too much memory in the c... 2016-09-15
Tab Tab control and Demo source code - TabWebControl extended attributes 2016-09-15
A custom desktop Silverlight imitation of Google - Recently learned the Silverlight, use it to write ... 2016-09-15
Asp.net small tool v1.0 mysql database management - Software is introduced in the Asp.net, can through... 2016-09-15
V5.2 virtual currency trading site - Virtual currency trading site is a PHP thinkphp as... 2017-05-04
Open source e-commerce (online) v4.7.170303 iWebShop system - New part Increase merchant phone management backg... 2017-05-04
Tea tea food company dream weaving web site source code (with mobile terminal) v2.1 - Latest kernel development dream template, the temp... 2017-05-04
Pure imitation of han site source code, one a 】 【 c9cms kernel v1.0 - Generic http://www.wufazhuce.com/Han one · Config... 2017-05-04
WebOA v17.2 network office automation system - WebOA network using b/s structure development of o... 2017-05-03
Cool HITCMS reactive black v3.0 enterprise website source code - HITCMS-Haitian response black enterprises website ... 2017-05-03
Ray v7.02 speed survey system - Lightning speed survey system is a. NET+MSSQL deve... 2017-05-03
HITCMS Haitian responsive electronic mechanical v3.0 foreign trade website source code - HITCMS Haitian response electronic machinery trade... 2017-05-03
The latest thinkphp v5.2 work order system - Latest thinkphp work order system is a work order ... 2017-05-03
V3.3.6 Workerman high-performance PHP Socket (framework) - High performance PHP Socket framework Workerman re... 2017-05-03

 Back to top