Kindeditor代码实现代码插入和修改

放肆的年华 提交于 2019-11-28 19:21:06

      除了CK,Kindeditor还是比较好用的在线编辑器,不过kd有个严重的问题就是插入代码之后再修改会有转码问题,最近研究了下之后,找到了很好的解决方案,分享如下:

1、在编辑器插入上传的时候进行二次编码转义:(来自@红薯 的解决方案):

/**
	 * 格式化HTML文本
	 * 
	 * @param content
	 * @return
	 */
	public String rhtml(String content) {
		if (StringUtils.isBlank(content))
			return content;
		String html = content;
		html = StringUtils.replace(html, "&", "&");
		html = StringUtils.replace(html, "<", "&lt;");
		html = StringUtils.replace(html, ">", "&gt;");
		return html;
	}

2、经过的二次转义的内容在修改编辑的时候就不会存在问题了,但在显示的时候我们需要进行一次反转义工作:

/**
	 * 格式化HTML文本
	 * 
	 * @param content
	 * @return
	 */
         public String backToHtml(String content) {
		if (StringUtils.isBlank(content))
			return content;
		String html = content;
		html = StringUtils.replace(html, "&lt;", "<");
		html = StringUtils.replace(html, "&gt;", ">");
		html = StringUtils.replace(html, "&amp;", "&");
		return html;
	}

这里要注意的就是三个replace方法的先后顺序不能乱,即要保证所有元素都只执行了一个反转义;

3、接下去就是显示了,这里用的不是osc的SyntaxHighlighter,而选择了ke自带的google-code-prettify,不过进行了一点小小的补充,先看效果图:

要实现以上效果,要做一点小的修改:

1、在kindeditor编辑器下的plugins/code目录下修改core.js文件以实现标号效果

<pre class="prettyprint'
//改为:
<pre class="prettyprint linenums'

2、当然少不了导入prettify.css和prettify.js两个包

3、最后在boby里加上onload="prettyPrint()"就可以啦,当然jquery里也行,只要保证加载完执行就ok啦

4、为实现以上效果也是对prettify.css进行了一点小的修改,这就不细说啦

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!