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}-->']
延伸閱讀