首页> 开发问题 >前端问题 前端问题
完美解决Ckeditor编辑器二次编辑代码片段不显示html实体 自动过滤html的问题
作者:小萝卜 2019-08-16 【 编辑器 CKEditor 】 浏览 1563
简介博客在后台编辑代码片段的时候,当保存内容包含html标签的时候,数据库中正常存入了html标签,输入到页面也是正常显示的,但是当我再次进去这条数据编辑的时候就不见了,是Ckeditor把它们过滤掉了。
博客在后台编辑代码片段的时候,当保存内容包含html标签的时候,数据库中正常存入了html标签,输入到页面也是正常显示的,但是当我再次进去这条数据编辑的时候就不见了,这是因为Ckeditor把它们过滤掉了。
我在后台正常添加代码片段:
编辑器这个时候显示的是正常的:
当体提交了这篇文章,再次进去这个篇文章的时候就显示乱了: 查看了数据库中存放的这个数据是正常的,编辑器这里显示实体了,这是因为ckeditor过滤了,如果你这个时候在点一下保存前台也会跟着乱。。。这个问题困扰了萝卜很长一段时间,以至于萝卜的博客之前的内容,但凡插入代码含有html标签的,萝卜都会手动敲一个空格,防止页面错乱,但这样不是长久之计。最近萝卜又在各种查资料,终于看到了一篇和我问题相同的文章。
我在后台正常添加代码片段:
编辑器这个时候显示的是正常的:
当体提交了这篇文章,再次进去这个篇文章的时候就显示乱了: 查看了数据库中存放的这个数据是正常的,编辑器这里显示实体了,这是因为ckeditor过滤了,如果你这个时候在点一下保存前台也会跟着乱。。。这个问题困扰了萝卜很长一段时间,以至于萝卜的博客之前的内容,但凡插入代码含有html标签的,萝卜都会手动敲一个空格,防止页面错乱,但这样不是长久之计。最近萝卜又在各种查资料,终于看到了一篇和我问题相同的文章。
该文章的解决办法是利用setData('编辑器的默认值')函数来重新重新编辑编辑器内容。具体方法如下:
更改前的代码:
<div class="row">
<div class="col col-title">
正文:
</div>
<div class="col-xs-9" >
<textarea class="form-control ckeditor" name="bodys" id="container">
{?$bodys?}
</textarea>
<!-- 加载编辑器的容器 -->
</div>
</div>
更改后的代码:
<div class="col-xs-9" >
<pre id="pre_container" class="hidden">
{?$bodys?}
</pre>
<textarea class="form-control " name="bodys" id="container"></textarea>
<!-- 加载编辑器的容器 -->
</div>
<script type="text/javascript">
var ck_obj_container = CKEDITOR.replace('container');
ck_obj_container.setData($('#pre_container').html());
$('#pre_container').remove();
</script>
更改之后这块困扰萝卜很久很久的问题终于解决了。。。个人博客要处理的东西要比想象的多得多。。。
很赞哦! (1)