shawl.qiu Javascript 语法高亮函数 v1.1

shawl.qiu Javascript 语法高亮函数 v1.1 

 说明:
 长话短说, 本函数最适合只使用 <>& 这三个字符编码的内容.
 演示什么的, 要说清楚这个函数要很多口水, 鄙人最近没太多时间可口水...
 
 目前支持语法高亮的语言有: css, xml, javascript, asp/vbscrip, asp/jscript.

 * 待加: 后续版本将会逐渐支持: c#.net, Jscript.net, T-SQL.
 * 提示: 使用 xml 选项可作用于 html && xhtml
 
 目录:
 1. fHighlight(sStr, sOpt) 源代码
 2. 调用参考(只是参考, 我没时间做演示)
 
 附:
 1. 下载原格式
  http://files.myopera.com/btbtd/javascript/function/fHighlight_v_1.1.7z
 
 提示: 本函数可在 客户端-js/服务端-Jscript 环境使用
 
 shawl.qiu
 2006-12-23
 http://blog.csdn.net/btbtd

 1. fHighlight(sStr, sOpt) 源代码
  1.  /*------------------------------------------------------------*/
  2.   * shawl.qiu Javascript 语法高亮函数 v1.1
  3.   * ---/----------------------------------
  4.   * 参数说明:
  5.   * sStr: 字符串, 要进行语法高亮的字符串.
  6.   * sOpt: 字符串, 要进行语法高亮的语言, all 为编码全部可用语法.
  7.   * ---/---------------------------------- 
  8.   * 目前支持语法高亮的语言有: css, xml, javascript, asp/vbscrip, asp/jscript.
  9.   * 可用 sOpt 值:
  10.   * css && css_ && xml && javascript && javascript_
  11.   * aspjscript && aspjscript_ && aspvbscript && aspvbscript_
  12.   * 注: 不加 _ 表示精确匹配, 加 _ 表格模糊匹配.
  13.   * ---/---------------------------------- 
  14.   * 待加: 后续版本将会逐渐支持: c#.net, Jscript.net, T-SQL.
  15.   * 提示: 使用 xml 选项可作用于 html && xhtml 
  16.   * ---/---------------------------------- 
  17.   * 特别注意: 本函数采用 ###字符### 作为特别标记, 因此, 为了不出错,请将 # 字符进行编码.
  18.   * 如: # -> &#35;    
  19.  /*------------------------------------------------------------*/
  20.  //-------------------------begin function fHighlight(sStr, sOpt)-----------------------//
  21.  function fHighlight(sStr, sOpt){
  22.   if(!sStr||sStr.replace(//s+/g,'').length<0)return false;
  23.   if(!sOpt) var sOpt='all';
  24.    sOpt=sOpt.toLowerCase();
  25.  
  26.   try{return rpls(sStr, sOpt)}catch(e){};
  27.  
  28.   function rpls(sStr, sOpt){
  29.    if(!sOpt) var sOpt='all';
  30.    //------------------------------begin javascript
  31.    if(//bjavascript/b/ig.test(sOpt)||sOpt=='all'){
  32.     sStr=sStr.replace(//&lt/;script.*?/&gt/;[/s/S]*?/&lt/;//script/&gt/;/gi,
  33.     function (m){
  34.      m=m.replace(/(/&lt/;script.*?/&gt/;)([/s/S]*?)(/&lt/;//script/&gt/;)/ig, function ($1,$2,$3,$4){
  35.      
  36.       $2=$2.replace(//&lt/;script.*?/&gt/;/ig, function (m_){
  37.        m_=m_.replace(/([a-z]+)/=(/'|/")(/S+)/2/gi,
  38.        '<span style="color:blue;">$1</span>=$2<span style="color:fuchsia;">$3</span>$2');
  39.        
  40.        m_=m_.replace(//&lt/;script/i,'/&lt/;<span style="color:red">script</span>');
  41.        return m_;
  42.       });
  43.      
  44.       $3=javascript($3);
  45.       
  46.       $4=$4.replace(/script/i,'<span style="color:red">script</span>');
  47.       return $2+$3+$4;
  48.      });
  49.      return m;
  50.     });
  51.    
  52.    }
  53.    //------------------------------end javascript
  54.    // begin javascript_
  55.    if(//bjavascript/_/b/gi.test(sOpt))return javascript(sStr);
  56.   
  57.    //------------------------------end javascript_
  58.    // begin asp/jscript
  59.    if(//baspjscript/b/gi.test(sOpt)||sOpt=='all'){
  60.     sStr=sStr.replace(//&lt/;/%[/s/S]*?/%/&gt/;/g,function(m){
  61.      return aspJscript(m);
  62.     });
  63.    }
  64.   
  65.    //------------------------------end asp/jscript
  66.    // begin aspjscript_
  67.    if(//baspjscript/_/b/gi.test(sOpt))return aspJscript(sStr);
  68.   
  69.    //------------------------------end aspjscript_
  70.    // begin aspvbscript
  71.    if(//baspvbscript/b/gi.test(sOpt)||sOpt=='all'){
  72.     sStr=sStr.replace(//&lt/;/%[/s/S]*?/%/&gt/;/g,function(m){
  73.      return aspVbscript(m);
  74.     });
  75.    }
  76.    //------------------------------end aspvbscript
  77.    // begin aspvbscript_
  78.    if(//baspvbscript/_/b/gi.test(sOpt)){
  79.     return aspVbscript(sStr);
  80.    }
  81.    //------------------------------end aspvbscript_
  82.    // begin css
  83.    if(//bcss/b/gi.test(sOpt)||sOpt=='all'){
  84.     sStr=sStr.replace(//&lt/;style.*?/&gt/;[/s/S]*?/&lt/;//style/&gt/;/gi,function(m){
  85.      return css(m);
  86.     });
  87.    }
  88.    //------------------------------end css
  89.    // begin css_
  90.    if(//bcss/_/b/gi.test(sOpt))return css(sStr);
  91.   
  92.    //------------------------------end css_
  93.   
  94.    // begin xml
  95.    if(//bxml/b/gi.test(sOpt)||sOpt=='all'){
  96.     // XML
  97.     sStr=sStr.replace(//&lt/;/?xml[^><]+(/&gt/;|)/gi, function(m){
  98.      m=m.replace(/[a-z]+/=(/'|/").*?/1/gi,function(m_){
  99.       m_=m_.replace(/(/'|")(.*?)/1/, '$1<span style="color:fuchsia;">$2</span>$1')
  100.       m_=m_.replace(/(.*?)/=/,'<span style="color:blue;">$1</span>=');    
  101.       return m_;
  102.      });
  103.      m=m.replace(//?([a-z-]+)/i,'?<span style="color:red;">$1</span>')
  104.      return m;
  105.     } );
  106.     // ELEMENT
  107.     sStr=sStr.replace(//&lt/;/!ELEMENT[^><]+(/&gt/;|)/gi, function(m){
  108.      m=m.replace(/ ([^(?,*+)|]+) /gi,' <span style="color:blue;">$1</span> ');
  109.      m=m.replace(/(!ELEMENT)/gi,'<span style="color:red;">$1</span>');
  110.      m=m.replace(//(([/s/S]+)/)/gi,function ($1){
  111.        return $1.replace(/([/S]+)/gi,'<span style="color:fuchsia;">$1</span>')
  112.       }
  113.      );
  114.      return m;
  115.     } );
  116.     // ATTLIST
  117.     sStr=sStr.replace(//&lt/;/!ATTLIST[^><]+(/&gt/;|)/gi, function(m){
  118.      // &lt;!ATTLIST title id CDATA #IMPLIED&gt;
  119.      m=m.replace(/ ([^#]+)/g, ' <span style="color:blue;">$1</span>');
  120.      m=m.replace(/([#][^&]+)/g,'<span style="color:fuchsia">$1</span>');
  121.      m=m.replace(/(!ATTLIST)/gi,'<span style="color:red;">$1</span>');
  122.      return m;
  123.     } );
  124.     // ATTLIST 1
  125.     sStr=sStr.replace(//&lt/;/!ATTLIST[^><]+(/&gt/;|)/gi, function(m){
  126.      m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
  127.      m=m.replace(//!(ATTLIST)/i,'!<span style="color:red;">$1</span>');
  128.      m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
  129.      return m;
  130.     } );
  131.     // DOCTYPE
  132.     sStr=sStr.replace(//&lt/;/!DOCTYPE[^><]+(/&gt/;|)/[/gi, function(m){
  133.      m=m.replace(/ (/S+) /gi,' <span style="font-weight:bold">$1</span> ');
  134.      m=m.replace(//!(DOCTYPE)/gi, '!<span style="color:red">$1</span>');
  135.      return m;
  136.     } );
  137.     // IGNORE
  138.     sStr=sStr.replace(//&lt/;/!/[ (IGNORE|INCLUDE)[^><]+(/]/]/&gt/;|/&gt/;|)/gi, function(m){
  139.      m=m.replace(/(/&lt/;!/[) (IGNORE|INCLUDE)/,'$1 <span style="font-weight:bold">$2</span>');
  140.      m=m.replace(/([^!])/[([/S ]+)/]/,'$1[<span style="color:fuchsia">$2</span>]')
  141.      return m;
  142.     } );
  143.     // DOCTYPE 1
  144.     sStr=sStr.replace(//&lt/;/!DOCTYPE[^><]+(/&gt/;|)/gi, function(m){
  145.      m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
  146.      m=m.replace(//!(DOCTYPE)/i,'!<span style="color:red;">$1</span>');
  147.      m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
  148.      return m;
  149.     } );
  150.     // NOTATION
  151.     sStr=sStr.replace(//&lt/;/!NOTATION[^><]+(/&gt/;|)/gi, function(m){
  152.      m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
  153.      m=m.replace(//!(NOTATION)/i,'!<span style="color:red;">$1</span>');
  154.      m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
  155.      return m;
  156.     } );
  157.     // ENTYT(Y|IES)
  158.     sStr=sStr.replace(//&lt/;/!ENTIT(Y|IES)[^><]+(/&gt/;|)/gi, function(m){
  159.      m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
  160.      m=m.replace(//!(ENTIT(Y|IES))/i,'!<span style="color:red;">$1</span>');
  161.      m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
  162.      return m;
  163.     } );
  164.     // </markup/>
  165.     sStr=sStr.replace(//&lt/;(//|)[a-z0-9_/-:]+(/&gt/;| ///&gt/;|///&gt/;)/gi, function(m){
  166.      m=m.replace(/(/&lt/;(//|))([a-z0-9_/-:]+)/gi,'$1<span style="color:red;">$3</span>');
  167.      return m;
  168.     } );
  169.     // <markup pram='value'/>
  170.     sStr=sStr.replace(/&lt;[^<>]+/=[^><]+(///&gt/;|/&gt/;|)/gi, function(m){
  171.      m=m.replace(/([a-z:]+)( |)/=/gi,'<span style="color:blue;">$1</span>$2###=###');
  172.     
  173.      m=m.replace(/[#]{3}/=[#]{3}(/'|")([^<>'"]+)/g,
  174.      '=$1<span style="color:fuchsia;">$2</span>');
  175.     
  176.      m=m.replace(//#{3}/=/#{3}/g,'=');
  177.     
  178.      m=m.replace(/(/&lt/;)([^<>]+)/,'$1<span style="color:red;">$2</span>');
  179.      return m;
  180.     } );
  181.      
  182.    }
  183.    //------------------------------end xml
  184.    return sStr;
  185.   }
  186.  
  187.   //---------------------------begin function css(sStr)--------------------//
  188.   function css(sStr){
  189.    sStr=sStr.replace(/([/w.#*:, /-]+?)/{([/s/S]+?)/}/g,function($1,$2,$3){
  190.     if(//,/.test($2)){
  191.      $2=$2.split(',');
  192.      for(var i=0, j=$2.length; i<j; i++){
  193.       $2[i]=$2[i].fontcolor('red');
  194.      }
  195.      $2=$2.join(',');
  196.     } else $2=$2.fontcolor('red');
  197.     $3=$3.replace(//&/#35/;/&/#35/;/&/#35/;/g,'###');
  198.     $3=$3.replace(/([/w/-]+)/:(.*?)/;/g,function($1,$2,$3){
  199.      $2=$2.fontcolor('blue');
  200.      $3=$3.fontcolor('fuchsia');
  201.     $3=$3.replace(//#{3}/g,'&#35;&#35;&#35;');
  202.      return $2+':'+$3+';';
  203.     });
  204.    
  205.     return $2+'{'+$3+'}';
  206.    });
  207.   
  208.    sStr=sStr.replace(/(/!important|/@import)/gi,
  209.    '<span style="color:red;font-weight:bold;">$1</span>');
  210.   
  211.    sStr=sStr.replace(/(CDATA|/@charset)/gi,
  212.    '<span style="color:black;font-weight:bold;">$1</span>');
  213.   
  214.    sStr=sStr.replace(*([^<>]+)/*///g,'/*<span style="color:#ccc">$1</span>*/');
  215.   
  216.    sStr=sStr.replace(/(/&lt/;//)(style)(/&gt/;)/,'$1<span style="color:red;">$2</span>$3')
  217.   
  218.    sStr=sStr.replace(//&lt/;style.*?/&gt/;/ig, function (m_){
  219.     m_=m_.replace(/([a-z]+)/=(/'|/")(/S+)/2/gi,
  220.     '<span style="color:blue;">$1</span>=$2<span style="color:fuchsia;">$3</span>$2');
  221.     
  222.     m_=m_.replace(//&lt/;style/i,'/&lt/;<span style="color:red">style</span>');
  223.     return m_;
  224.    });
  225.   
  226.    return sStr;
  227.   }
  228.   //---------------------------end function css(sStr)----------------------//
  229.  
  230.   //---------------------------begin function javascript(sStr)--------------------//
  231.   function javascript(sStr){
  232.    sStr=sStr.replace(/(/!/=/=|/=/=/=)/g,'###$1###');
  233.    sStr=sStr.replace(/([^#=!*///])(/!/=|/=/=)/g,'$1###$2###');
  234.    sStr=sStr.replace(/([^#=!*///])(/=)/g,'$1###$2###');
  235.   
  236.    sStr=sStr.replace(/([/w]+)/.([^!=><]*)(/(|/[/{|)([^!=><]*)(/)|/}|/})/gi,function(m_){
  237.    
  238.     m_=m_.replace(/(/(|/[|/{)(.*?)(/}|/]|/))/gi,'$1<span style="color:fuchsia">$2</span>$3');
  239.     return m_.fontcolor('blue');
  240.    })
  241.   
  242.    sStr=sStr.replace(/([a-z.0-9/[/]/-/+_]+)( |)([#]{3}(/!|/=|/*|//))/gi,function($1_,$2_, $3_, $4_){
  243.   
  244.     if(/(/[|/()/.test($2_)>-1){
  245.      $2_=$2_.replace(/(/[|/))(.*?)(/)|/])/g,'$1<span style="color:fuchsia;">$2</span>$3' );
  246.     }
  247.     $2_='<span style="color:blue;">'+$2_+'</span>';
  248.    
  249.     return $2_+$3_+$4_;
  250.    })
  251.   
  252.    sStr=sStr.replace(/([#]{3}[^a-z0-9]*?[#]{3})([^<>]+)/g, function($1_, $2_, $3_){
  253.     $3_=$3_.replace(/(/{|/(|/[)([^/(/{/[]+)(/)|/}|/])/g,
  254.     '$1<span style="color:fuchsia;">$2</span>$3');
  255.     $3_='<span style="color:red;">'+$3_+'</span>';
  256.    
  257.     return $2_+$3_;
  258.    })
  259.   
  260.    var re=new RegExp('//b(array|else|if|while|alert|var|try|catch|finaly|for|switch|case|'+
  261.    'default|function|return|break|null|false|true|new)//b','gi');
  262.    sStr=sStr.replace(re,function($1){
  263.     $1='<span style="font-weight:bold;">'+$1+'</span>';
  264.     return $1;
  265.    });
  266.   
  267.    // CDATA
  268.    sStr=sStr.replace(/(/!/[)(CDATA)(/[)/gi,'$1<span style="font-weight:bold;">$2</span>$3');
  269.   
  270.    sStr=sStr.replace(/[#]{3}(.+?)[#]{3}/gi,'<span style="color:orange;">$1</span>');
  271.   
  272.    sStr=sStr.replace(/([^<>]+)/g,'//<span style="color:ccc;">$1</span>');
  273.   
  274.    sStr=sStr.replace(*[/s/S]*?/*///g,function(m_){
  275.     m_=m_.replace(/>([/s/S]*?)</g,'><span style="color:#ccc;">$1</span><');
  276.     return m_;
  277.    });
  278.   
  279.    sStr=sStr.replace(*([^<>]+)/*///g,'/*<span style="color:#ccc">$1</span>*/');
  280.   
  281.    return sStr;
  282.   }
  283.   //---------------------------begin function aspJscript(sStr)--------------------//
  284.   function aspJscript(sStr){
  285.    sStr=javascript(sStr);
  286.    sStr=sStr.replace(/(ActiveXObject|Enumerator)/gi,
  287.    '<span style="font-weight:bold;color:black;">$1</span>');
  288.   
  289.    sStr=sStr.replace(//b(response|request)/b/gi,
  290.    '<span style="color:red;">$1</span>');
  291.   
  292.    sStr=sStr.replace(//b(Open|write|movenext|addnew|update)/b/gi,
  293.    '<span style="color:blue;">$1</span>');
  294.   
  295.    return sStr;
  296.   }
  297.   //---------------------------end function aspJscript(sStr)----------------------//
  298.   //---------------------------begin function aspVbscript(sStr)--------------------//
  299.   function aspVbscript(sStr){
  300.  
  301.    sStr=sStr.replace(//'([^/'<>]+)/g,'/'<span style="color:#ccc">$1</span>');
  302.   
  303.    sStr=sStr.replace(/(if)([^<>]+?)(then)/gi,function($1,$2,$3,$4){
  304.     $3='<span style="color:blue;">'+$3+'</span>';
  305.     return $2+$3+$4;
  306.    });
  307.   
  308.    sStr=sStr.replace(//b(set)/b([^:<>]+)/=([^:<>]+)/gi,function($1,$2,$3,$4){
  309.     $3='<span style="color:red">'+$3+'</span>';
  310.     $4='<span style="color:blue">'+$4+'</span>'
  311.     return $2+$3+'='+$4;
  312.    });
  313.   
  314.    sStr=sStr.replace(/(function )(/S+?)/(/gi,function($1,$2,$3,$4){
  315.     $3='<span style="color:red;font-weight:bold;">'+$3+'</span>';
  316.     return $2+$3+'(';
  317.    });
  318.   
  319.    sStr=sStr.replace(/((public|private)( function| sub| property [a-z]+|))([^:<>]+)/gi,
  320.     function($1,$2,$3,$4,$5){
  321.      if(//(/.test($5)){
  322.      // $5='~~~'
  323.      } else {
  324.       if(//,/.test($5)){
  325.        $5=$5.split(',');
  326.        for(var i=0, j=$5.length; i<j; i++){
  327.         $5[i]='<span style="color:blue;font-weight:bold;">'+$5[i]+'</span>';
  328.        }
  329.        $5=$5.join(',');
  330.       }else $5='<span style="color:blue;font-weight:bold;">'+$5+'</span>';
  331.      }
  332.      return $2+$5;
  333.     });
  334.   
  335.    sStr=sStr.replace(/(for )([^:<>]+)( to )([^:<>]+)/gi,function($1,$2,$3,$4,$5){
  336.     $3='<span style="color:blue;">'+$3+'</span>';
  337.     $4='<span style="color:black;font-weight:bold;">'+$4+'</span>';
  338.     $5='<span style="color:blue;">'+$5+'</span>';
  339.     return $2+$3+$4+$5;
  340.    });
  341.   
  342.    sStr=sStr.replace(/(for each )(.*?)( in )([^:<>]+)/gi,function($1,$2,$3,$4,$5){
  343.     $3='<span style="color:blue;">'+$3+'</span>';
  344.     $5='<span style="color:red;font-weight:bold;">'+$5+'</span>';
  345.     return $2+$3+$4+$5;
  346.    });
  347.   
  348.    sStr=sStr.replace(/(class) ([/w]+)/gi,function($1,$2,$3){
  349.     $2='<span style="color:black;font-weight:bold">'+$2+'</span>';
  350.     $3='<span style="color:red;font-weight:bold;">'+$3+'</span>';
  351.     return $2+' '+$3;
  352.    });
  353.   
  354.    sStr=sStr.replace(/(end) (class)/gi,function($1,$2,$3){
  355.     $3='<span style="color:black;font-weight:bold;">'+$3+'</span>'   
  356.     return $2+' '+$3
  357.    });
  358.   
  359.    sStr=sStr.replace(//(([^<>]+)/)/g,function($1,$2){
  360.     if(//(/.test($2)){
  361.      $2=$2.replace(/([^()]+)/g,'<span style="color:fuchsia">$1</span>');
  362.     }else $2='<span style="color:fuchsia;">'+$2+'</span>';
  363.     return '/('+$2+'/)';
  364.    });
  365.   
  366.    sStr=sStr.replace(//b(dim)/b ([^:<>]+)/gi,function($1,$2,$3){
  367.     if(//,/.test($3)){
  368.      $3=$3.split(',');
  369.      for(var i=0, j=$3.length; i<j; i++){
  370.       $3[i]='<span style="color:blue;font-weight:bold;">'+$3[i]+'</span>';
  371.      }
  372.      $3=$3.join(',');
  373.     } else $3='<span style="color:blue;font-weight:bold;">'+$3+'</span>'
  374.     return $2+' '+$3;
  375.    });
  376.   
  377.    sStr=sStr.replace(/(response|request|server)/.([a-z]+)([^<>]+)/gi,function($1,$2,$3,$4){
  378.     $2='<span style="color:blue">'+$2+'</span>';
  379.     $3='<span style="color:blue">'+$3+'</span>'
  380.     $4='<span style="color:gray">'+$4+'</span>'
  381.     return $2+'.'+$3+$4
  382.    });
  383.   
  384.    var re=new RegExp('//b(pattern|ignorecase|multiline|global|replace|left|right|len'+
  385.    '|type|open|close|loadfromfile|read|write|savetofile|position|copyto|mode|readtext'+
  386.    '|charset|writeBlankLines|ResponseText|send|createFolder|chr|chrb|lenb|mid|midb'+
  387.    '|hex)//b','ig');
  388.    sStr=sStr.replace(re,'<span style="color:blue;">$1</span>');
  389.   
  390.    var re=new RegExp('//b(class/_initialize|Class/_Terminate)//b','ig');
  391.    sStr=sStr.replace(re,'<span style="color:red;">$1</span>');
  392.   
  393.    var re=new RegExp('//b(function|if|then|else|exit|set|with|end|private|sub'+
  394.    '|public|for|next|each|redim|call|select|case|true|false|do|while|loop|until|and'+
  395.    '|or|not|set|new|dim|property|get|let|in|option explicit|on error|resume|createObject'+
  396.    '|preserve)//b','ig');
  397.    sStr=sStr.replace(re,'<span style="color:black;font-weight:bold;">$1</span>');
  398.   
  399.    var re=new RegExp('//b(on error|resume)//b','ig');
  400.    sStr=sStr.replace(re,'<span style="color:red;font-weight:bold;">$1</span>');
  401.   
  402.    return sStr;
  403.   }
  404.   //---------------------------end function aspVbscript(sStr)----------------------//
  405.  }
  406.  //-------------------------end function fHighlight(sStr, sOpt)-------------------------//
 2. 调用参考(只是参考, 我没时间做演示)
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>shawl.qiu template</title>
  6. <style type="text/css">
  7. /* <![CDATA[ */

     

    /* ]]> */

  8. </style>
  9. <script type="text/javascript">
  10. //<![CDATA[
  11.  function done(oObj){
  12.   var html=oObj.document.body.innerHTML;

     

      var oCbx=document.getElementsByName('nHighlight');

  13.   var arCbx=[];
  14.   var bHlFlag=false;
  15.   for(var i=0, j=oCbx.length, k=0; i<j; i++ ){
  16.    if(oCbx[i].checked){
  17.     arCbx[k++]=oCbx[i].value;
  18.     bHlFlag=true;
  19.    }
  20.   }
  21.   
  22.   if(bHlFlag){ 
  23.    html=html.replace(//#{3}/g,'&#35;&#35;&#35;');
  24.    html=opener.fHighlight(html, arCbx.join(' '));
  25.   }

     

      var cCbxBlur=document.getElementsByName('nHighlightPrcs');

  26.   var arCbxBlur=[];
  27.   var bHlFlagBlur=false;
  28.   for(var i=0, j=cCbxBlur.length, k=0; i<j; i++ ){
  29.    if(cCbxBlur[i].checked){
  30.     arCbxBlur[k++]=cCbxBlur[i].value;
  31.     bHlFlagBlur=true;
  32.     break;
  33.    }
  34.   }
  35.   
  36.   if(bHlFlagBlur){ 
  37.    html=html.replace(//#{3}/g,'&#35;&#35;&#35;');
  38.    html=opener.fHighlight(html, arCbxBlur.join(' '));
  39.   }

     

      var oLn=document.getElementById('nPadLn');

  40.    oLn.checked?oLn=true:oLn=false;
  41.   if(oLn){
  42.    html=html.split(/<br>|<br//>/i)
  43.    for(var i=0, j=html.length; i<j; i++){
  44.     html[i]='<li>'+html[i]+'</li>'; 
  45.    }
  46.    html=html.join('');
  47.    html='<ol>'+html+'</ol>';
  48.   } oLn=null;
  49.   
  50.   var oMoveSpace=document.getElementById('nMoveSpace');
  51.   if(oMoveSpace.checked){
  52.    html=html.replace(/ /g,'&nbsp;');
  53.   } oMoveSpace=null;
  54.   
  55.   var oMoveTab=document.getElementById('nMoveTab');
  56.   if(oMoveTab.checked){
  57.    html=html.replace(//t/g,'&nbsp;');
  58.   } oMoveTab=null;
  59.   
  60.   var oSelect=document.getElementById('nSelect');
  61.   var sMarkup=oSelect.options[oSelect.selectedIndex].innerHTML;
  62.   var sClassName='sq'+sMarkup.replace(/^./,function(m){return m.toUpperCase();});
  63.   
  64.   oMoveTab=null;
  65.   
  66.   opener.sqEditor.cmd('insertHTML', false,
  67.   '<'+sMarkup+' class="'+sClassName+'">'+html+'</'+sMarkup+'>');
  68.   
  69.   opener.focus();
  70.   self.close();
  71.  }
  72.  
  73.  onload=function(){
  74.   var multi=document.getElementsByName('nHighlightPrcs');
  75.   for(var i=0, j=multi.length; i<j; i++){
  76.    multi[i].onclick=function(){
  77.     fSingle();
  78.    }
  79.   }
  80.   var multi=document.getElementsByName('nHighlight');
  81.   for(var i=0, j=multi.length; i<j; i++){
  82.    multi[i].onclick=function(){
  83.     fMulti();
  84.    }
  85.   }
  86.  }
  87.  function fMulti(){
  88.   var o=document.getElementsByName('nHighlightPrcs');
  89.   for(var i=0, j=o.length; i<j; i++){
  90.    o[i].checked=false;
  91.   }
  92.  }
  93.  function fSingle(){
  94.   var o=document.getElementsByName('nHighlight');
  95.   for(var i=0, j=o.length; i<j; i++){
  96.    o[i].checked=false;
  97.   }
  98.  }
  99. //]]>
  100. </script>
  101. </head>
  102. <body>
  103. <h2>格式化数据</h2>
  104. <div >
  105.  <b>语法高亮</b>:<br/>
  106.  精确替换(可多选):
  107.  css:<input type="checkbox" value="css" name='nHighlight' />
  108.  xml:<input type="checkbox" value="xml" name='nHighlight' />
  109.  javascript:<input type="checkbox" value="javascript" name='nHighlight' />
  110.  asp/jscript:<input type="checkbox" value="aspJscript" name='nHighlight' />
  111.  asp/vbscript:<input type="checkbox" value="aspvbscript" name='nHighlight' />
  112.  
  113.  <br/>
  114.  模糊替换(只能选一):
  115.  css:<input type="radio" value="css_" name='nHighlightPrcs' />
  116.  javascript:<input type="radio" value="javascript_" name='nHighlightPrcs' />
  117.  asp/jscript:<input type="radio" value="aspJscript_" name='nHighlightPrcs' />
  118.  asp/vbscript:<input type="radio" value="aspVbscript_" name='nHighlightPrcs' />
  119.   
  120.  <p/>
  121. </div>
  122. <div id="main" style="width:700px;">
  123.  <div style="float:right">
  124.   <b>添加行号:</b>
  125.   <input type='checkbox' id='nPadLn' checked='checked' /><br/>
  126.   
  127.   <b>实体化空格</b>
  128.   <input type='checkbox' id='nMoveSpace' checked='checked' /><br/>
  129.   
  130.   <b>实体化跳格:</b>
  131.   <input type='checkbox' id='nMoveTab' checked='checked' /><br/>
  132.   
  133.   <b>格式标签:</b>
  134.   <select id='nSelect'>
  135.    <option selected="selected">div</option>
  136.    <option>p</option>
  137.    <option>pre</option>
  138.    <option>xmp</option>
  139.   </select><br/>
  140.   
  141.  </div>
  142.  <div style="float:left;">
  143.  <iframe src="about:blank" id='ifmPre' width='550' height='350'></iframe>
  144.  </div>
  145. </div>
  146. <br clear="both">
  147. <script type="text/javascript">
  148. //<![CDATA[
  149.  var o=document.getElementById('ifmPre').contentWindow;
  150.   o.document.designMode='on';
  151.   o.document.contentEditable=true;
  152.   o.document.open();
  153.   o.document.write('&nbsp;')
  154.   o.document.close();
  155. //]]>  
  156. </script><br/>
  157. <button onclick="done(document.getElementById('ifmPre').contentWindow)">
  158. done</button>
  159. <button onclick="reset(document.getElementById('ifmPre').contentWindow)">
  160.  rest</button>
  161. <button onclick='opener=null;self.close();'>
  162. close me</button>
  163. </body>
  164. </html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值