解決Ckeditor編輯器不顯示html實體,自動過濾html的問題


Ckeditor 4.5.4,在編輯的時候,使用源碼編輯,當保存內容包含Javascript、Style標簽的時候,數據庫中有Javascript、Style標簽,輸入到頁面也可以執行,但是我再次編輯的時候就不見了,是Ckeditor把它們過濾掉了,需要做如下配置:

CKEDITOR.replace( 'textarea_id', { allowedContent: true });

 


 

最后又發現一個問題:

設置了{ allowedContent: true}后,雖然html沒有被過濾,但是html實體被渲染成真正的html效果

即,本來我想僅僅展示html代碼,而不是讓它渲染真正的html效果。

好在Ckeditor提供了JS操作Ckeditor實例,給編輯器賦值的接口setData('編輯器的默認值')

原來的前端代碼參考如下:

<textarea id="<!--{$inputId}-->" name="<!--{$inputName}-->"><!--{$defaultValue}--></textarea>
<script type="text/javascript">
    var ck_obj_<!--{$inputId}--> = CKEDITOR.replace('<!--{$inputId}-->', {width: '<!--{$width}-->', height: '<!--{$height}-->'});
</script>

改造后的前端代碼參考如下:

<pre id="pre_<!--{$inputId}-->" class="hidden">
    <!--{$defaultValue}-->
</pre>
<textarea id="<!--{$inputId}-->" name="<!--{$inputName}-->"></textarea>
<script type="text/javascript">
    var ck_obj_<!--{$inputId}--> = CKEDITOR.replace('<!--{$inputId}-->', { width: '<!--{$width}-->', height: '<!--{$height}-->' });
    ck_obj_<!--{$inputId}-->.setData($('#pre_<!--{$inputId}-->').html());
    $('#pre_<!--{$inputId}-->').remove();
</script>

注意,服務端PHP獲取編輯器的內容,參考代碼如下:

$_POST['<!--{$inputName}-->']

 

 

延伸閱讀

CKEditor使用筆記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM