zoukankan      html  css  js  c++  java
  • 使用 SyntaxHighlighter 实现代码高亮

    如果我们已经将 FCKeditor 和 SyntaxHighlighter 代码高亮插件整合好(参看http://www.cnblogs.com/catprayer/archive/2010/04/24/1719521.html),让我们来看看如何用 SyntaxHighlighter 来实现代码高亮。

    1,下载源码包:syntaxhighlighter_2.1.364.zip (http://alexgorbatchev.com/wiki/SyntaxHighlighter),需要注意的是,这个源码包和上面的插件是不一样的

    解压后:

    如果以前没有接触过的话,可以参考 "test.html" 来看一下是如何实现的。

    2,可以使用 jQuery 及 官方插件 jQuery UI 来做一个好看的页面。

    codeHeightLight.php :

    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    2  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    3  <head>
    4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    5 <title>SyntaxHighlighter Build Test Page</title>
    6  <!--jQuery + UI-->
    7 <script type="text/javascript" src="jQuery/jquery-1.4.2.min.js"></script>
    8 <script type="text/javascript" src="jQuery/mess_load_help_min.js"></script>
    9 <link type="text/css" rel="stylesheet" href="jQuerycssbase/common.css"/>
    10 <link type="text/css" rel="stylesheet" href="jQuerycssbase/jquery.ui.all.css"/>
    11  <!---FCKeditor-->
    12 <script type="text/javascript" src="fckeditor/fckeditor.js"></script>
    13 <script>
    14 $(function(){
    15 //加载编辑器
    16   var oFCKeditor = new FCKeditor('textarea', 700, 350, 'Basic');
    17 oFCKeditor.ReplaceTextarea();
    18 //进行处理
    19   $dialogdiv = $("#dialogdiv");
    20 $myform = $("#myform");
    21 $dialogdiv.dialog({
    22 title: "代码高亮生成器",
    23 height: 467,
    24 740,
    25 autoOpen: true,
    26 resizable: false,
    27 modal: true,
    28 buttons: {
    29 '生成高亮代码': function(){
    30 $myform.submit();
    31 $(this).dialog('close');
    32 },
    33 '关闭窗口': function(){
    34 window.self.close();
    35 //关闭浏览器窗口
    36 }
    37 }
    38 });
    39 });
    40 </script>
    41 </head>
    42
    43 <body>
    44 <div id="dialogdiv">
    45 <form id="myform" action="checkCode.php" method="POST">
    46 <textarea id="textarea" name="textarea"></textarea>
    47 </form>
    48 </div>
    49 </body>
    50 </html>

    checkCode.php:

    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    3 <head>
    4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    5 <title>SyntaxHighlighter Build Test Page</title>
    6 <!--SyntaxHighlighter-->
    7 <script type="text/javascript" src="scripts/shCore.js"></script>
    8 <script type="text/javascript" src="scripts/shBrushBash.js"></script>
    9 <script type="text/javascript" src="scripts/shBrushCpp.js"></script>
    10 <script type="text/javascript" src="scripts/shBrushCSharp.js"></script>
    11 <script type="text/javascript" src="scripts/shBrushCss.js"></script>
    12 <script type="text/javascript" src="scripts/shBrushDelphi.js"></script>
    13 <script type="text/javascript" src="scripts/shBrushDiff.js"></script>
    14 <script type="text/javascript" src="scripts/shBrushGroovy.js"></script>
    15 <script type="text/javascript" src="scripts/shBrushJava.js"></script>
    16 <script type="text/javascript" src="scripts/shBrushJScript.js"></script>
    17 <script type="text/javascript" src="scripts/shBrushPhp.js"></script>
    18 <script type="text/javascript" src="scripts/shBrushPlain.js"></script>
    19 <script type="text/javascript" src="scripts/shBrushPython.js"></script>
    20 <script type="text/javascript" src="scripts/shBrushRuby.js"></script>
    21 <script type="text/javascript" src="scripts/shBrushScala.js"></script>
    22 <script type="text/javascript" src="scripts/shBrushSql.js"></script>
    23 <script type="text/javascript" src="scripts/shBrushVb.js"></script>
    24 <script type="text/javascript" src="scripts/shBrushXml.js"></script>
    25 <link type="text/css" rel="stylesheet" href="styles/shCore.css"/>
    26 <link type="text/css" rel="stylesheet" href="styles/shThemeDefault.css"/>
    27 <script type="text/javascript">
    28 SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
    29 SyntaxHighlighter.all();
    30 </script>
    31 </head>
    32 <body>
    33 <div id="content">
    34 <?
    35 echo stripslashes($_POST['textarea']); //去除转义符(因为 PHP 会自动转义)
    36 ?>
    37 </div>
    38 </body>
    39 </html>

    实现效果:

    弹出框:

    点击

    写入代码:

    最终效果:

    效果不错吧?!哈哈~~ 快试试吧!!!!!!

    让我们再来看看它到底是怎么处理高亮的:

    看看它的 InnerHtml:

    <DIV id=highlighter_654624 class="syntaxhighlighter jscript">
    <DIV class="bar ">
    <DIV class=toolbar><A style="WIDTH: 16px; HEIGHT: 16px" class="item viewSource" title="view source" href="#viewSource" highlighterId="highlighter_654624" commandName="viewSource">view source</A>
    <DIV class="item copyToClipboard">
    <OBJECT id=highlighter_654624_clipboard title="copy to clipboard" codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" classid=clsid:d27cdb6e-ae6d-11cf-96b8-444553540000 width=16 height=16 type=application/x-shockwave-flash><PARAM NAME="_cx" VALUE="423"><PARAM NAME="_cy" VALUE="423"><PARAM NAME="FlashVars" VALUE=""><PARAM NAME="Movie" VALUE="scripts/clipboard.swf"><PARAM NAME="Src" VALUE="scripts/clipboard.swf"><PARAM NAME="WMode" VALUE="Transparent"><PARAM NAME="Play" VALUE="0"><PARAM NAME="Loop" VALUE="-1"><PARAM NAME="Quality" VALUE="High"><PARAM NAME="SAlign" VALUE=""><PARAM NAME="Menu" VALUE="0"><PARAM NAME="Base" VALUE=""><PARAM NAME="AllowScriptAccess" VALUE="always"><PARAM NAME="Scale" VALUE="ShowAll"><PARAM NAME="DeviceFont" VALUE="0"><PARAM NAME="EmbedMovie" VALUE="0"><PARAM NAME="BGColor" VALUE=""><PARAM NAME="SWRemote" VALUE=""><PARAM NAME="MovieData" VALUE=""><PARAM NAME="SeamlessTabbing" VALUE="1"><PARAM NAME="Profile" VALUE="0"><PARAM NAME="ProfileAddress" VALUE=""><PARAM NAME="ProfilePort" VALUE="0"><PARAM NAME="AllowNetworking" VALUE="all"><PARAM NAME="AllowFullScreen" VALUE="false"></OBJECT></DIV><A style="WIDTH: 16px; HEIGHT: 16px" class="item printSource" title=print href="#printSource" highlighterId="highlighter_654624" commandName="printSource">print</A><A style="WIDTH: 16px; HEIGHT: 16px" class="item about" title=? href="#about" highlighterId="highlighter_654624" commandName="about">?</A></DIV></DIV>
    <DIV class=lines>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>01</CODE></TD>
    <TD class=content><CODE class="jscript plain">$(</CODE><CODE class="jscript keyword">function</CODE><CODE class="jscript plain">(){ </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>02</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript comments">//加载编辑器 </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>03</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript keyword">var</CODE> <CODE class="jscript plain">oFCKeditor = </CODE><CODE class="jscript keyword">new</CODE> <CODE class="jscript plain">FCKeditor(</CODE><CODE class="jscript string">'textarea'</CODE><CODE class="jscript plain">, 700, 350, </CODE><CODE class="jscript string">'Basic'</CODE><CODE class="jscript plain">); </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>04</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">oFCKeditor.ReplaceTextarea(); </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>05</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript comments">//进行处理 </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>06</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">$dialogdiv = $(</CODE><CODE class="jscript string">"#dialogdiv"</CODE><CODE class="jscript plain">); </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>07</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">$myform = $(</CODE><CODE class="jscript string">"#myform"</CODE><CODE class="jscript plain">); </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>08</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">$dialogdiv.dialog({ </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>09</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">title: </CODE><CODE class="jscript string">"代码高亮生成器"</CODE><CODE class="jscript plain">, </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>10</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">height: 467, </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>11</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain"> 740, </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>12</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">autoOpen: </CODE><CODE class="jscript keyword">true</CODE><CODE class="jscript plain">, </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>13</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">resizable: </CODE><CODE class="jscript keyword">false</CODE><CODE class="jscript plain">, </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>14</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">modal: </CODE><CODE class="jscript keyword">true</CODE><CODE class="jscript plain">, </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>15</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">buttons: { </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>16</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript string">'生成高亮代码'</CODE><CODE class="jscript plain">: </CODE><CODE class="jscript keyword">function</CODE><CODE class="jscript plain">(){ </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>17</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">$myform.submit(); </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>18</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">$(</CODE><CODE class="jscript keyword">this</CODE><CODE class="jscript plain">).dialog(</CODE><CODE class="jscript string">'close'</CODE><CODE class="jscript plain">); </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>19</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">}, </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>20</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript string">'关闭窗口'</CODE><CODE class="jscript plain">: </CODE><CODE class="jscript keyword">function</CODE><CODE class="jscript plain">(){ </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>21</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">window.self.close(); </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>22</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript comments">//关闭浏览器窗口 </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>23</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">} </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>24</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">} </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt1">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>25</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">}); </CODE></TD></TR></TBODY></TABLE></DIV>
    <DIV class="line alt2">
    <TABLE>
    <TBODY>
    <TR>
    <TD class=number><CODE>26</CODE></TD>
    <TD class=content><CODE class=spaces>&nbsp;&nbsp;&nbsp;&nbsp;</CODE><CODE class="jscript plain">});</CODE></TD></TR></TBODY></TABLE></DIV></DIV></DIV>
    <P>&nbsp;</P>


  • 相关阅读:
    右键菜单:锁到任务栏丢失 修复
    检测到鼠标时自动禁用触摸板 (注:仅适用于个别笔记本)
    清除右键菜单CMD入口
    VBS编辑字段
    VBS创建数据表
    VBS创建数据库
    QTP操作论坛回复编辑框----webelement
    数字排序
    对应键盘的ASCII码(备忘)
    将字符串打乱输出
  • 原文地址:https://www.cnblogs.com/catprayer/p/1719532.html
Copyright © 2011-2022 走看看