kindeditor4整合SyntaxHighlighter,让代码亮起来
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件
上一篇“让kindeditor显示高亮代码”中已经说过,高亮代码主要用的是class,所以
第一步:首先修改kindeditor代码高亮写入pre标签时的class类名:
打开/kindeditor4/plugins/code/code.js,找到类似于这样一行
html = '<pre class="prettyprint' + cls + '">\n' + K.escape(code)'</pre>';
改为以下的内容:
html = '<pre class="brush:' + type + ';">\n' + K.escape(code) +'</pre>';
第二步:自定义页面中kindeditor中选择“插入代码”的图标,下拉菜单中的语言选择项:
同样是打开code.js文件,即可看到对应的选项,此处提供一份已经修改后的代码,供参考
var lang = self.lang(name + '.'),
html = ['<div style="padding:10px 20px;">',
'<div class="ke-dialog-row">',
'<select class="ke-code-type">',
'<option value="js">JavaScript</option>',
'<option value="html">HTML</option>',
'<option value="css">CSS</option>',
'<option value="php">PHP</option>',
'<option value="pl">Perl</option>',
'<option value="py">Python</option>',
'<option value="ruby">Ruby</option>',
'<option value="java">Java</option>',
'<option value="vb">ASP/VB</option>',
'<option value="cpp">C/C++</option>',
'<option value="c-sharp">C#</option>',
'<option value="xml">XML</option>',
'<option value="shell">Shell</option>',
'<option value="as3">ActionScript3</option>',
'<option value="cf">ColdFusion</option>',
'<option value="delphi">Delphi</option>',
'<option value="diff">diff</option>',
'<option value="erl">Erlang</option>',
'<option value="groovy">Groovy</option>',
'<option value="jfx">JavaFX</option>',
'<option value="plain">Plain Text</option>',
'<option value="scala">Scala</option>',
'<option value="sql">SQL</option>',
'<option value="">Other</option>',
'</select>',
'</div>',
'<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>',
'</div>'].join(''),
此处要注意,选项中,value对应的值要和SyntaxHighlighter的brush aliases对应,SyntaxHighlighter官方支持的brush aliases表如下:
http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/
第三步:kindeditor部分已经改造完毕,下面要在页面中加入SyntaxHighlighter,以支持对代码的高亮解析。
1:下载SyntaxHighlighter,目前官方的最新版本已经更新到3.0.83,官方下载地址为:http://alexgorbatchev.com/SyntaxHighlighter/download/download.php?sh_current
2:下载完毕后解压,我们发现script目录中有很对js文件,支持不同语言的解析。复制我们需要解析的语言的js文件,到我们项目中所对应的目录中。 其中:shAutoloader.js //支持语音的自动加载,当然我是把整个插件引入到项目中。
3:复制css样式文件,到我们我们的项目中 第四步:在页面中引入以上文件
<link href="/Public/plugs/syntaxhighlighter/styles/shCore.css" rel="stylesheet" type="text/css">
<link href="/Public/plugs/syntaxhighlighter/styles/shThemeDefault.css" rel="stylesheet" type="text/css">
<script src="/Public/plugs/syntaxhighlighter/scripts/shCore.js"></script>
<script src="/Public/plugs/syntaxhighlighter/scripts/shAutoloader.js"></script>
第四步:打开SyntaxHighlighter自动加载功能,开启自动解析
默认其实可以在页面中分别引入单独的需要的解析js文件,但是如果我们的页面需要支持10多种语言,那就需要引入10多个js文件,那样对网页的加载速度有很大的影响,所以我们通过SyntaxHighlighter最新提供的autoloader自动加载功能,加载仅需要解析的js文件
function path() {
var args = arguments,
result = [];
for (var i = 0; i < args.length; i++)
result.push(args[i].replace('$', '/Public/plug/syntaxhighlighter/scripts/'));
return result
}
$(function () {
SyntaxHighlighter.autoloader.apply(null, path(
'applescript $shBrushAppleScript.js',
'actionscript3 as3 $shBrushAS3.js',
'bash shell $shBrushBash.js',
'coldfusion cf $shBrushColdFusion.js',
'cpp c $shBrushCpp.js',
'c# c-sharp csharp $shBrushCSharp.js',
'css $shBrushCss.js',
'delphi pascal $shBrushDelphi.js',
'diff patch pas $shBrushDiff.js',
'erl erlang $shBrushErlang.js',
'groovy $shBrushGroovy.js',
'java $shBrushJava.js',
'jfx javafx $shBrushJavaFX.js',
'js jscript javascript $shBrushJScript.js',
'perl pl $shBrushPerl.js',
'php $shBrushPhp.js',
'text plain $shBrushPlain.js',
'py python $shBrushPython.js',
'ruby rails ror rb $shBrushRuby.js',
'sass scss $shBrushSass.js',
'scala $shBrushScala.js',
'sql $shBrushSql.js',
'vb vbnet $shBrushVb.js',
'xml xhtml xslt html $shBrushXml.js'
));
SyntaxHighlighter.all();
});
SyntaxHighlighter.autoloader()应该在doc都载入完以后再执行。
如果引用了jQuery,可以放$(document).ready()里,这样的话放在header里也没问题。
但如果原生js,要不放body的onload里,要不放页面最后,比如在、随便找个地方放,就能看到效果了
至此,我们的页面应该可以正常高亮显示代码了,不过当我们的代码多行是,在chrome浏览器下右边会显示滚动条,非常影响美观。
解决办法:
打开syntax-highlighter-compress中的样式文件shCoreDefault.css,找个空白处添加
.syntaxhighlighter table {margin: 1px 0 !important;}
原文链接:http://www.d8jd.com/art/55804.html
kindeditor4整合SyntaxHighlighter,让代码亮起来的更多相关文章
- 想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研
想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研 http://blog.csdn.net/testing_is_believing/article/details/22 ...
- 持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知
持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知 一:Sonar是什么?Sonar 是一个用于代码质量管理的开放平台,通过插件机制,Sonar 可以集成不同的测试工具 ...
- springboot整合mybatis,redis,代码(二)
一 说明: springboot整合mybatis,redis,代码(一) 这个开发代码的复制粘贴,可以让一些初学者直接拿过去使用,且没有什么bug 二 对上篇的说明 可以查看上图中文件: 整个工程包 ...
- LUA整合进MFC代码
这几天研究了一下lua,主要关注的是lua和vc之间的整合,把代码都写好放在VC宿主程序里,然后在lua里调用宿主程序的这些代码(或者叫接口.组件,随便你怎么叫),希望能用脚本来控制主程序的行为.这实 ...
- springboot整合mybatis,redis,代码(一)
一 搭建项目,代码工程结构 使用idea或者sts构建springboot项目 二 数据库sql语句 SQLyog Ultimate v12.08 (64 bit) MySQL - 5.7.14-l ...
- 从零开始的SpringBoot项目 ( 六 ) 整合 MybatisPlus 实现代码自动生成
1.添加依赖 <!-- MySQL数据库 --> <dependency> <groupId>mysql</groupId> <artifactI ...
- SSM框架的配置整合(包含配置文件代码)
由于SSM框架学习都要去网上或者以前的项目拷贝相同的代码,所以我在此把自己用到的配置文件全放在这里,帮助自己,帮助别人 首先开始前导入依赖和处理静态资源导出问题 <dependencies> ...
- spring和struts2的整合的xml代码
导入spring的pring-framework-4.0.4.RELEASE的所有包,导入struts2下(对于初学的推荐)bin下所有的包,虽然有些包可以能现在你用不到,但可以保证你基本上不会出现缺 ...
- XML的DOM、SAX、DEMO4J及DEMO4J整合Path的代码例子
1.DMO解析 package cn.itcast.xml.dom; import java.io.File; import javax.xml.parsers.DocumentBuilder; im ...
随机推荐
- vue2.0实践的一些细节
最近用vue2.0做了个活动.做完了回头发现,好像并没有太多的技术难点,而自己好像又做了比较久...只能说效率有待提升啊...简单总结了一些比较细节的点. 1.对于一些已知肯定会有数据的模块,先用一个 ...
- 使用Visual Studio SDK制作GLSL词法着色插件
使用Visual Studio SDK制作GLSL词法着色插件 我们在Visual Studio上开发OpenGL ES项目时,避免不了写Shader.这时在vs里直接编辑shader就会显得很方便. ...
- Visual Studio 2012远程调试中遇到的问题
有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户 ...
- 【Reading Note】Python读书杂记
赋值 >>> list=[] >>> app=[list,list,list] >>> app [[], [], []] >>> ...
- 玩转spring boot——结合AngularJs和JDBC
参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...
- ajax请求和aspx返回数据
ajax请求: $(function () { $.ajax({ url: "index.aspx?method=send", ...
- jquery.each()
$(selector).each(function(index,element)) index - 选择器的 index 位置 element - 当前的元素(也可使用 "this" ...
- H3 BPM产品安装手册(.Net版本)
1 安装说明 1.1 服务器安装必备软件 在使用该工作流软件之前,有以下一些软件是必须安装: l IIS7.0以上版本(必须): l .Net Framework 4.5(必 ...
- ExtJS 项目准备工作(一)
首先,需要从网上下载两个文件,一个是SenchaCmd-6.2.0-windows-64bit(我的电脑是window 10 64位) 另一个是ExtJs6的源码包(ext-6.0.0.415). 源 ...
- CentOS:设置系统级代理(转)
原文地址:http://www.cnblogs.com/cocowool/archive/2012/07/05/2578487.html YUM代理设置 编辑/etc/yum.conf,在最后加入 # ...