kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,不过由于SyntaxHighlighter的应用很是普遍,因此将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件。javascript
1.第一步首先修改kindeditor代码高亮写入pre标签时的class类名:php
打开/kindeditor4/plugins/code/code.js,找到相似于这样一行:css
html = '<pre class="prettyprint' + cls + '">\n' + K.escape(code)'</pre>';
改成如下的内容:html
//html = '<pre class="prettyprint' + cls + '">\n' + K.escape(code) +'</pre>'; //将代码高亮替换为SyntaxHighlighter插件须要的类名 html = '<pre class="brush:' + type + ';">\n' + K.escape(code) +'</pre>'; //此处为将原有写法注释,上一行为修改后的内容。
2.自定义页面中kindeditor中选择“插入代码”的图标,下拉菜单中的语言选择项:java
一样是打开code.js文件,便可看到对应的选项,此处提供一份已经修改后的代码,供参考web
'<select class="ke-code-type">', '<option value="java">Java</option>', '<option value="php">PHP</option>', '<option value="html">HTML</option>', '<option value="css">CSS</option>', '<option value="js">JavaScript</option>', '<option value="xml">XML</option>', '<option value="shell">Shell</option>', '<option value="sql">SQL</option>', '</select>',此处要注意,选项中,value对应的值要和SyntaxHighlighter的brush aliases对应,SyntaxHighlighter官方支持的brush aliases表以下:
http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/ sql
3.kindeditor部分已经改造完毕,下面要在页面中加入SyntaxHighlighter,以支持对代码的高亮解析。chrome
第一步:下载SyntaxHighlighter,目前官方的最新版本已经更新到3.0.83,官方下载地址为:http://alexgorbatchev.com/SyntaxHighlighter/download/download.php?sh_currentshell
第二步:下载完毕后解压,咱们发现script目录中有很对js文件,支持不一样语言的解析。复制咱们须要解析的语言的js文件,到咱们项目中所对应的目录中。同时复制下面三个js文件: 浏览器
shAutoloader.js //支持语音的自动加载
shCore.js
(shBrushJava.js等,根据本身的须要复制)
第三步:复制css样式文件,到咱们咱们的项目中:
shCore.css
shThemeDefault.css(也能够根据本身须要的风格复制对应的样式文件)
第四步:在页面中引入以上文件:
<link type="text/css" href="syntax/shCore.css" media="screen" /> <link type="text/css" href="syntax/shThemeDefault.css" media="screen"/> <script type="text/javascript" src="syntax/shCore.js"></script> <script type="text/javascript" src="syntax/shAutoloader.js"></script>
第五步:打开SyntaxHighlighter自动加载功能,开启自动解析
默认其实能够在页面中分别引入单独的须要的解析js文件,可是若是咱们的页面须要支持10多种语言,那就须要引入10多个js文件,那样对网页的加载速度有很大的影响,因此咱们经过SyntaxHighlighter最新提供的autoloader自动加载功能,加载仅须要解析的js文件。
参考代码以下:
<script type="text/javascript"> SyntaxHighlighter.autoloader( 'java /syntax/shBrushJava.js', 'php /syntax/shBrushPhp.js', 'html xml /syntax/shBrushXml.js', 'css /syntax/shBrushCss.js', 'js jscript javascript /syntax/shBrushJScript.js', 'bash shell /syntax/shBrushBash.js', 'sql /syntax/shBrushSql.js' ); SyntaxHighlighter.all(); </script>注意:
SyntaxHighlighter.autoloader()应该在doc都载入完之后再执行。
若是引用了jQuery,能够放$(document).ready()里,这样的话放在header里也没问题。
但若是原生js,要不放body的onload里,要不放页面最后,好比在、随便找个地方放,就能看到效果了
4.至此,咱们的页面应该能够正常高亮显示代码了,不过当咱们的代码多行是,在chrome浏览器下右边会显示滚动条,很是影响美观。
解决办法:
打开syntax-highlighter-compress中的样式文件shCoreDefault.css,找个空白处添加
.syntaxhighlighter table {margin: 1px 0 !important;}
改好以后,高亮代码右边栏滚动条就没有了,若是使用的其余风格,就修改其余风格对应的样式文件。
注:本文首发于 度外网络 官方博客: http://www.duwaiweb.com/blog/20120825_a68714ed-b065-4191-8a60-97a53bf234cd.html