`
郑云飞
  • 浏览: 813990 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UEditor样式被过滤无法显示问题

 
阅读更多

前言:

         上周开发中有用到开源的富文本编辑器UEditor,在使用的过程中遇到了样式被过滤无法显示问题,经过一番折腾终解决,此外,还有一些关于获取前台界面元素的一些总结。

1. UEditor样式被过滤无法显示问题
         上周有用到百度开源的富文本编辑器----UEditor.不得不说这个富文本编辑器做的真的很赞,个人觉得比CKeditor要好用很多,效果也很不错。
但是在使用的过程中,有遇到在向文本编辑器插入HTML文本时,添加的样式老是被过滤掉,找了很多的资料,并结合最新的版本,整理了下如何解决样式过滤的方法。
我们在富文本编辑页点击HTML小图标,切换到HTML模式,然后在该模式下加入如下HTML:

1
2
3
4
5
6
<style type="text/css">
.bg{ background:lightbule;}
</style>
<div class="bg">
Hello EveryBody Welcome To UEditor World!
</div>

以上的html意思很简单,就是为div加了一个名为bg 的样式,
然后我们再点击HTML图标,转换到预览页,可以看到我们的div的背景色并没有任何的变化,而且我们在div之前写的样式,也没有被渲染,
反而是以文本的形式显示了出来。
F12查看整个页面,发现我们之前写的样式和标签都被渲染成如下的html:

1
2
3
4
<div style="display: none;" cdata_tag="style" type="text/css">
<p>
Hello EveryBody Welcome To UEditor World!
</p>

由以上代码可以看出,我们的style标签被转换成了div,并且设置样式为不可见,我们的div标签被转换成了p标签。
这说明编辑器本身自己做了一个转换,类似于一个过滤吧,可能是为了出于安全性考虑,防止用户在前段输入非法的代码、脚本等,事实上我觉得这有点多此一举,
既然都让富文本编辑了,不能写html脚本,还叫什么富文本。
然后我们再点击HTML图标,看看HTML试图,内容如下:

1
2
3
4
<style type="text/css">.bg{ background:lightbule;}</style>
<p>
Hello EveryBody Welcome To UEditor World!
</p>

结合以上分析得出,该编辑器内部过滤机制是将style标记转换为div,而将div等标签以p替代。如何解决呢?
之前有在网上查过相关的资料,都说是在配置文件里有一个黑白名单,然后就在配置文件里找了下,在最新版本的脚本文件里怎么找也没找到那个所谓的黑白名单,
当然了,没有黑白名单也照样可以解决问题的。
首先在ueditor.all.js文件内搜索allowDivTransToP,找到如下的代码,将true设置为false
me.setOpt('allowDivTransToP',false);
//默认的过滤处理
//进入编辑器的内容处理
然后再接着下边的addInputRule方法中将switch代码段中的case style,script都给注释或者删掉。
me.addInputRule(function (root) {
var allowDivTransToP = this.options.allowDivTransToP;
var val;
//进行默认的处理
root.traversal(function (node) {
if (node.type == 'element') {
if (!dtd.$cdata[node.tagName] && me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && !dtd.$empty[node.tagName] && (!node.attrs || utils.isEmptyObject(node.attrs))) {
if (!node.firstChild()) node.parentNode.removeChild(node);
else if (node.tagName == 'span' && (!node.attrs || utils.isEmptyObject(node.attrs))) {
node.parentNode.removeChild(node, true)
}
return;
}

//删除switch下的case style 和script
switch (node.tagName) {
case 'a':
if (val = node.getAttr('href')) {
node.setAttr('_href', val)
}
break;
完成以上操作之后,保存即可。再次插入html时,样式就可以显示了。
解释一下以上操作的意义。
第一步将allowDivTransToP设置为false是因为默认的设置是将div自动转换为p,这样写好的样式就找不到相应的div
了,所以才渲染不上的。
第二步将addInputRule函数中的switch 代码段中的case style ,script选择给删除或者注释,是为了避免出现编辑器将style或script自动的转换成别的标签。
好了,大家可以试一试,看看效果。

分享到:
评论

相关推荐

    ueditor完整过滤.zip

    ueditor的过滤功能可以智能识别并剥离这些额外的标签,只保留基本的段落和标题样式,使得内容在网页上展示时更为简洁、统一。 3. **ueditor的HTML过滤**:ueditor.config.js是ueditor的核心配置文件,其中包含了...

    ueditor帮助指南(含常见问题解答)

    - **样式表与脚本引入**:为了解决编辑器在某些页面上无法正常渲染样式的问题,需要引入UEditor的源码文件夹`third-party`目录下的对应CSS文件(如`shCoreDefault.css`)和JS文件(如`shCore.js`),并在页面加载...

    UEditor1.4.2

    - **XSS防护**:UEditor 内置了XSS过滤机制,有效防止恶意代码注入。 - **HTML编码**:敏感字符自动转义,防止代码注入攻击。 7. **性能优化** - **异步上传**:图片和文件上传采用异步方式,不会阻塞编辑器的...

    ueditor分页

    - 在ueditor中,分页可能涉及到内容的截取、页面链接的生成以及分页样式的设计。 3. **实现方式**: - 一般而言,ueditor的分页可以通过监听其内容变化,然后根据预设的每页字符数或者行数来动态计算分页。 - ...

    百度编辑器UEditor ASP.NET示例Demo

    7. **安全考虑**: 考虑到XSS攻击和SQL注入,需要对用户提交的内容进行过滤和转义,防止恶意代码被执行。同时,对于上传功能,应限制文件类型和大小,以确保服务器安全。 8. **优化与维护**: 随着UEditor版本的更新...

    ueditor编辑框demo

    【ueditor编辑框】是一款广泛应用于各类管理系统的高级文本编辑器,它提供了丰富的富文本编辑功能,使得用户在网页上可以方便地进行图文混排、样式调整等操作。ueditor编辑框以其强大的功能和易用性,深受开发者的...

    Ueditor demo

    8. **安全问题**:在使用Ueditor时,必须注意XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等安全问题。对用户提交的内容进行过滤和转义,确保不会执行恶意代码。 通过学习这个Ueditor demo,你可以了解到如何在实际...

    ueditor组件

    ueditor也提供了过滤和转义机制,确保内容的安全性。 总结,ueditor是一款功能强大的富文本编辑组件,适用于各种类型的网站和应用,提供丰富的编辑功能和高度的自定义空间。通过深入理解和灵活运用ueditor,开发者...

    Ueditor百度编辑器JSP版

    - **服务器部署**:将解压后的`ueditor`文件夹放置在Web应用的`WEB-INF`目录下的`jsps`或`resources`文件夹内,确保编辑器的静态资源能够被服务器正确访问。 - **JSP页面引入**:在需要使用编辑器的JSP页面中,通过`...

    UEditor 1.3.5

    1. **富文本编辑功能**:UEditor 支持插入文本、图片、超链接、表格、列表等基本元素,同时也提供字体样式调整、段落对齐、字号选择等功能,满足用户对内容格式化的多样化需求。 2. **图片上传与管理**:UEditor ...

    UEditor网页编辑插件

    3. **代码编辑器**:对于技术类网站,UEditor提供代码高亮显示和缩进,方便用户编辑和展示代码片段,增强了用户体验。 4. **自定义扩展**:UEditor提供了丰富的API和插件接口,允许开发者根据项目需求进行定制和...

    ueditor-1.1.2.jar

    1. **富文本编辑器功能**:Ueditor支持多种文本编辑功能,如字体样式设置、段落格式调整、图片上传、视频插入、链接添加、表格操作等。这些功能使得非程序员也能轻松创建和编辑内容。 2. **前端技术栈**:Ueditor...

    ueditor+php.zip

    4. **自定义配置**:ueditor允许用户自定义编辑器的样式和功能,如工具栏按钮、语言设置等。在PHP环境中,这些配置可以通过服务器端变量传递,实现动态配置。 5. **API集成**:ueditor还可以与其他服务或API(如...

    百度ueditor完整包

    代码高亮是程序员和技术类网站喜爱的功能,UEditor支持多种编程语言的代码高亮显示,让技术文档的编写更加专业。同时,它还有预览模式,可以在编辑过程中实时查看最终效果,提高了工作效率。 在安全性方面,UEditor...

    百度编辑器ueditor-dev-1.5.0官方最新版gbk-php.rar

    在保证功能的同时,Ueditor也重视安全问题,通过合理的HTML过滤机制和XSS防护,有效防止恶意代码的注入,保障了网站的安全性。 总的来说,Ueditor 1.5.0官方最新版gbk-php不仅提供了全面的富文本编辑功能,还兼顾...

    百度ueditor官方包

    - **兼容性**:确保所使用的UEditor版本与项目所依赖的浏览器兼容,特别是对于旧版本浏览器的兼容问题要提前考虑。 - **安全性**:在使用UEditor时,要注意防止XSS攻击,对用户输入进行适当的安全过滤和转义。 - ...

    百度编辑器ueditor

    ueditor的基础功能包括文本格式化、字体调整、字号选择、颜色设置、对齐方式、列表样式等,这些功能使得用户可以在网页上轻松创建和编辑文档。此外,它还支持段落缩进、行距调整、文字高亮等高级排版功能,确保了...

    ueditor.rar

    2. **安全问题**:ueditor在处理用户输入时,需注意XSS攻击防范,通过过滤或转义特殊字符来确保数据安全。 3. **插件开发**:ueditor的插件系统允许开发者根据业务需求扩展新功能,如添加Markdown支持、图表编辑等...

    百度Ueditor最新版使用实例

    在实际项目中,为了保证Ueditor的安全性,我们还需要关注XSS攻击防护和数据过滤。Ueditor提供了一些内置的防XSS策略,但具体应用时还需根据项目需求进行定制。同时,对于用户提交的内容,应进行适当的过滤和转义,...

    ueditor.zip

    - 安全性:Ueditor提交的内容需要在服务器端进行过滤和校验,防止XSS跨站脚本攻击和其他安全风险。 - 版权问题:虽然Ueditor是开源的,但在商业使用时需要遵循其开源协议,尊重作者的知识产权。 - 更新维护:持续...

Global site tag (gtag.js) - Google Analytics