除了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, "<", "<"); html = StringUtils.replace(html, ">", ">"); return html; }
二、通過的二次轉義的內容在修改編輯的時候就不會存在問題了,但在顯示的時候咱們須要進行一次反轉義工做:
/** * 格式化HTML文本 * * @param content * @return */ public String backToHtml(String content) { if (StringUtils.isBlank(content)) return content; String html = content; html = StringUtils.replace(html, "<", "<"); html = StringUtils.replace(html, ">", ">"); html = StringUtils.replace(html, "&", "&"); 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