如何将textarea中的HTML代码传入CKEDITOR的setData并正常渲染?
解决CKEditor setData仅显示HTML代码而非渲染效果的问题
我看了你的代码,问题出在获取textarea内容的方式上!你现在用$('textarea[name="venue_description"]').text()拿到的是转义后的HTML字符串(比如<p>会变成<p>),CKEditor收到这种转义后的内容,只会把它当成纯文本显示,不会去渲染成富文本。
直接修复方案
把获取内容的方法从.text()改成.val()就行——textarea的实际内容存在它的value属性里,.val()能正确拿到原始的HTML代码,不会转义实体。修改后的代码如下:
CKEDITOR.replace('editor', { height: 200 }); window.onload = function() { var html = $('textarea[name="venue_description"]').val(); CKEDITOR.instances.editor.setData(html); }
额外情况处理
如果你的textarea里存的本身就是已经转义过的HTML(比如数据库里存的是<p>这是内容</p>),那你还需要先把这些HTML实体解码成真实的标签,再传给setData。可以用这个小工具函数:
function decodeHtml(html) { const txt = document.createElement("textarea"); txt.innerHTML = html; return txt.value; } // 调用示例 window.onload = function() { const escapedHtml = $('textarea[name="venue_description"]').val(); const realHtml = decodeHtml(escapedHtml); CKEDITOR.instances.editor.setData(realHtml); }
内容的提问来源于stack exchange,提问作者Umair Shah
相关产品推荐
相关产品推荐

