我们用百度编辑器在文章中经常会插入各种代码,在第一次添加插入代码后,源码模式下看起来是正常的,但是为什么保存完之后,数据库中正常,但是编辑器中不正常呢?那是因为后台的百度编辑器就会把script标签给过滤掉,不能完整的显示。今天我们印秀网络来教你解决这个问题。
很多富文本编辑器都有两种初始化方式,以UEditor为例,一种是textarea标签,一种是script标签。
举例textarea方式:
<textarea id="container" name="content"> 这里写你的初始化内容</textarea><script type="text/javascript" src="ueditor.config.js"></script><script type="text/javascript" src="ueditor.all.js"></script><script type="text/javascript"> var ue = UE.getEditor('container');</scritp>
举例script方式:
<script id="container" name="content" type="text/plain"> 这里写你的初始化内容</script><script type="text/javascript" src="ueditor.config.js"></script><script type="text/javascript" src="ueditor.all.js"></script><script type="text/javascript"> var ue = UE.getEditor('container');</script>
两种方式的区别也只在于容器,我之前一直使用的是textarea方式,因为当时UEditor的script方式有一些小问题。
在今天寻找过滤问题的解决办法时,想了很多办法,看别人的配置文件等,但终究没解决。在不断搜索中,打开UEditor之前的帮助文档,现在官网已经去除了该旧文档的链接,在该文档中看到了这样一个问题:
首先要说明一点的是,UEditor也支持textarea标签作为编辑器的外围容器,只要将对应的标签名字换成textarea即可。除此之外,UEditor还支持使用div和script标签作为其容器。之所以要这样做,只是为了尽最大可能去满足和适应用户的各种不同需求。官方推荐使用script标签的原因是textarea会在提交数据的时候自动对里面的部分html文本进行一次特殊字符转义,从而导致有些不熟悉的用户在再编辑的时候出现编码混乱的问题。而使用script标签可以很好地克服这个缺点。
官方文档里面提到了“官方推荐使用script标签的原因是textarea会在提交数据的时候自动对里面的部分html文本进行一次特殊字符转义”,看到这句话后豁然开朗,一切问题的根源都在于容器标签而已,将容器标签修改为script后,一切都正常了。
1、修改inc/AspCms_CommonFun.asp,代码728处左右
Function decodeHtml(Byval str) IF len(str)=0 OR Trim(str)="" or isNull(str) then exit function str=replace(str,"'",CHR(39)) str=replace(str," "," ") decodeHtml=str End Function
添加下面一段新代码
Function decodeHtml2(Byval str) IF len(str)=0 OR Trim(str)="" or isNull(str) then exit function str=replace(str," "," ") str=replace(str,""",CHR(34)) decodeHtml2=str End Function
2、修改inc/AspCms_templateFun.asp,代码624处左右
添加下面一段新代码
content=replacekey(decodeHtml2(rsObj("Content")))
3、修改aspcms_admin/_content/_Content/AspCms_ContentAdd.asp
<script id="myEditor" name="Content" type="text/plain"><%=content%></script> <script> UE.getEditor('myEditor'); </script>
4、修改aspcms_admin/_content/_Content/AspCms_ContentEdit.asp
<script id="myEditor" name="Content" type="text/plain"><%=content%></script> <script> UE.getEditor('myEditor'); </script>
5、修改aspcms_admin/_content/AspCms_ContentFun.asp,代码237行下添加一段代码
Content=decodeHtml2(rs("Content"))