Kindeditor代碼實現代碼插入和修改

      除了CK,Kindeditor仍是比較好用的在線編輯器,不過kd有個嚴重的問題就是插入代碼以後再修改會有轉碼問題,最近研究了下以後,找到了很好的解決方案,分享以下:css

一、在編輯器插入上傳的時候進行二次編碼轉義:(來自@紅薯 的解決方案):html

/**
	 * 格式化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;
	}

二、通過的二次轉義的內容在修改編輯的時候就不會存在問題了,但在顯示的時候咱們須要進行一次反轉義工做:

/**
	 * 格式化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方法的前後順序不能亂,即要保證全部元素都只執行了一個反轉義;java

三、接下去就是顯示了,這裏用的不是osc的SyntaxHighlighter,而選擇了ke自帶的google-code-prettify,不過進行了一點小小的補充,先看效果圖:jquery

要實現以上效果,要作一點小的修改:編輯器

一、在kindeditor編輯器下的plugins/code目錄下修改core.js文件以實現標號效果google

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

二、固然少不了導入prettify.css和prettify.js兩個包

三、最後在boby里加上onload="prettyPrint()"就能夠啦,固然jquery裏也行,只要保證加載完執行就ok啦編碼

四、爲實現以上效果也是對prettify.css進行了一點小的修改,這就不細說啦spa

相關文章
相關標籤/搜索