UEditor百度编辑器中JS/html代码(script标签)被过滤的解决办法

2017-09-28 建站知识 浏览 手机预览
文章来源:http://www.imtr.cn/html/n154.html

作为一名程序员,在文章中经常会插入各种代码,大部分代码都不会发生问题,但div和script标签是经常会被使用到的。

而在之前的文章编写过程中,插入JS代码后,第一次文章会显示正常,而之后在后台编辑器中便只会显示执行过的JS代码,相当于JS代码被过滤掉了。今天研究了一下这个问题,发现解决办法很简单。

我们在插入代码后,源码模式下,看起来是正常的,但是为什么保存完之后,数据库中正常,但是编辑器中不正常呢?

很多富文本编辑器都有两种初始化方式,以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之前的帮助文档,现在官网已经去除了该旧文档的链接,在该文档中看到了这样一个问题:

大部分编辑器的容器都使用textarea,为什么UEditor采用了很特殊的script标签?

首先要说明一点的是,UEditor也支持textarea标签作为编辑器的外围容器,只要将对应的标签名字换成textarea即可。除此之外,UEditor还支持使用div和script标签作为其容器。之所以要这样做,只是为了尽最大可能去满足和适应用户的各种不同需求。官方推荐使用script标签的原因是textarea会在提交数据的时候自动对里面的部分html文本进行一次特殊字符转义,从而导致有些不熟悉的用户在再编辑的时候出现编码混乱的问题。而使用script标签可以很好地克服这个缺点。

官方文档里面提到了“官方推荐使用script标签的原因是textarea会在提交数据的时候自动对里面的部分html文本进行一次特殊字符转义”,看到这句话后豁然开朗,一切问题的根源都在于容器标签而已,将容器标签修改为script后,一切都正常了。


原文地址:http://www.imtr.cn/html/n154.html
  • 如果你的问题还没有解决,可以点击页面右侧的“ ”,站长收到问题后会尽快回复解决方案到你的邮箱。
  • 创造始于问题,有了问题才会思考,有了思考,才有解决问题的方法,才有找到独立思路的可能。 —— 陶行知