2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、为什么需要使用filterRules

在使用富文本编辑器ueditor的时候,有时候需要控制内容,例如:不允许带链接、不允许插入图片、控制内部html的样式等等,除了设置toolbars之外,还要保证粘贴到编辑器里面的内容也能被控制,这时就需要用到filterRules属性了。

二、如何使用filterRules

ueditor在网站上提供了这样的功能演示,在http://ueditor.baidu.com/website/examples/里提供了ueditor的一些高级使用演示。打开页面的过滤规则定制化链接,按F12查看源代码,看看百度的示例是怎么写的:

UE.getEditor('editor', {serverUrl: '/server/ueditor/controller.php',filterRules: function () {return{span:function(node){if(/Wingdings|Symbol/.test(node.getStyle('font-family'))){return true;}else{node.parentNode.removeChild(node,true)}},p: function(node){var listTag;if(node.getAttr('class') == 'MsoListParagraph'){listTag = 'MsoListParagraph'}node.setAttr();if(listTag){node.setAttr('class','MsoListParagraph')}if(!node.firstChild()){node.innerHTML(UE.browser.ie ? '&nbsp;' : '<br>')}},div: function (node) {var tmpNode, p = UE.uNode.createElement('p');while (tmpNode = node.firstChild()) {if (tmpNode.type == 'text' || !UE.dom.dtd.$block[tmpNode.tagName]) {p.appendChild(tmpNode);} else {if (p.firstChild()) {node.parentNode.insertBefore(p, node);p = UE.uNode.createElement('p');} else {node.parentNode.insertBefore(tmpNode, node);}}}if (p.firstChild()) {node.parentNode.insertBefore(p, node);}node.parentNode.removeChild(node);},//$:{}表示不保留任何属性br: {$: {}},
//                a: function (node) {
//                    if(!node.firstChild()){
//                        node.parentNode.removeChild(node);
//                        return;
//                    }
//                    node.setAttr();
//                    node.setAttr('href', '#')
//                },
//                strong: {$: {}},
//                b:function(node){
//                    node.tagName = 'strong'
//                },
//                i:function(node){
//                    node.tagName = 'em'
//                },
//                em: {$: {}},
//                img: function (node) {
//                    var src = node.getAttr('src');
//                    node.setAttr();
//                    node.setAttr({'src':src})
//                },ol:{$: {}},ul: {$: {}},dl:function(node){node.tagName = 'ul';node.setAttr()},dt:function(node){node.tagName = 'li';node.setAttr()},dd:function(node){node.tagName = 'li';node.setAttr()},li: function (node) {var className = node.getAttr('class');if (!className || !/list\-/.test(className)) {node.setAttr()}var tmpNodes = node.getNodesByTagName('ol ul');UE.utils.each(tmpNodes,function(n){node.parentNode.insertAfter(n,node);})},table: function (node) {UE.utils.each(node.getNodesByTagName('table'), function (t) {UE.utils.each(t.getNodesByTagName('tr'), function (tr) {var p = UE.uNode.createElement('p'), child, html = [];while (child = tr.firstChild()) {html.push(child.innerHTML());tr.removeChild(child);}p.innerHTML(html.join('&nbsp;&nbsp;'));t.parentNode.insertBefore(p, t);})t.parentNode.removeChild(t)});var val = node.getAttr('width');node.setAttr();if (val) {node.setAttr('width', val);}},tbody: {$: {}},caption: {$: {}},th: {$: {}},td: {$: {valign: 1, align: 1,rowspan:1,colspan:1,width:1,height:1}},tr: {$: {}},h3: {$: {}},h2: {$: {}},//黑名单,以下标签及其子节点都会被过滤掉'-': 'script style meta iframe embed object'}}()});

filterRules的属性是一个函数,返回了内容节点的过滤规则,过滤规则也是函数,提供对应的节点参数node,例如:

span:function(node){if(/Wingdings|Symbol/.test(node.getStyle('font-family'))){return true;}else{node.parentNode.removeChild(node,true)}
}

这样一来,我们就可以使用filterRules来编写符合自己需求的过滤规则了。

转载于:https://my.oschina.net/u/871551/blog/675955

使用filterRules过滤ueditor的内容相关推荐

  1. python和R对dataframe进行连接、行过滤更新列内容:dplyr、merge、inner、left、right、inner_join、left_join、sort_values、loc

    python和R对dataframe进行连接.行过滤更新列内容:dplyr.merge.inner.left.right.inner_join.left_join.sort_values.loc.ar ...

  2. html 保存草稿,利用localStorage实现对ueditor编辑内容定时保存为草稿,ueditor草稿箱...

    利用localStorage实现对ueditor编辑内容定时保存为草稿,ueditor草稿箱 直接看代码吧 1.引入ueditor和ueditor的使用我就不细说了 详情请戳http://blog.c ...

  3. Ueditor setContent内容含引号显示异常

    >问题描述 : 个人写的博客项目,使用Ueditor时,修改博客模块,将从数据库中取出的博客内容的HTML值,转发到展示界面. 通过隐藏域和el表达式暂存博客的HTML内容, <input ...

  4. 过滤 Excel 表格内容中的无效字符

    需求 最近在做一个Excel数据处理工具时发现,总是有些无效字符干扰,比如:不间断空格,制表符等. 所以,记录下遇到的无效字符,以便后续处理时统一过滤. 实现 获取表格内容,并将格式转换为文本格式: ...

  5. 推荐机制 协同过滤和基于内容推荐的区别

    基于人口统计学的推荐 基于人口统计学的推荐机制(Demographic-based Recommendation)是一种最易于实现的推荐方法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后 ...

  6. Linux查看配置文件过滤无用的内容

    很多开源软件的配置文件里有大量的注释内容,有时候我们想看配置文件中有哪些属性,一般是用cat+grep的方式查看,但是会看到很多无用的注释和大量的空行,不够直观,下面的命令可以方便的过滤掉那些命令,可 ...

  7. 百度编辑器ueditor,编辑内容过多时,工具栏不可见,不方便编辑或上传问题

    百度有这个配置文件 ueditor.config.js 里面本来是有自动工具栏浮动到顶部,可以一直显示工具栏,但我测试,一直不能正常实现.功能不正常 //是否保持toolbar的位置不动,默认true ...

  8. 敏感词过滤算法 为内容保驾护航 Java/.Net/C++/c/Python等语言是如何进行敏感词打码限制的 高效防范违规内容

    有人的地方,就有江湖,有输入框的地方,就有注入风险!有输入框的地方,就有敏感词!敏感词就像一个平台杀手,可能直接导致平台被封锁! 敏感词是一个APP.一个网站.一个内容平台的"杀手" ...

  9. 协同过滤算法概述与python 实现协同过滤算法基于内容(usr-item,item-item)

    协调过滤推荐概述 协同过滤(Collaborative Filtering)作为推荐算法中最经典的类型,包括在线的协同和离线的过滤两部分.所谓在线协同,就是通过在线数据找到用户可能喜欢的物品,而离线过 ...

最新文章

  1. MyBatis的DAO接口中参数传递建议使用map类型的原因
  2. Java Code Geeks和Packt提供的Hadoop书籍赠品
  3. 修改webpack的publicPath为动态设置以适配公司活动平台
  4. LeetCode 683. K 个空花盆(set/滑动窗口)
  5. Android拍照上传代码样例
  6. 绘制等压面图_等压面练习
  7. Eclipse插件安装方式
  8. 教你用SingalR实现后台开发程序运行时时检测
  9. 计算机四级笔试1,9月全国计算机等级考试四级网络工程师笔试试卷(1)
  10. 谷歌全新OS曝光:它是操作系统世界里一种全新的艺术
  11. FPV穿越机飞行入门练习
  12. 2022软工K班个人编程任务
  13. 临沂最美乡村医生彭玉梅:救人遇车祸身亡
  14. Python的列表解析式,集合解析式,字典解析式
  15. 2011计算机一级a,2011河北省大学生计算机一级A卷操作步骤
  16. html做表格(个人简历)
  17. PPT无法打开,总是提示修复该如何解决
  18. js监听鼠标拖动事件(按住左键拖动触发,松开左键取消)
  19. Redirect 重定向
  20. lin通信ldf文件解析_LIN通讯机制

热门文章

  1. YUV序列下采样以及彩色4:2:0与灰度4:0:0转换---基于matlab实现
  2. fiddler重定向
  3. c语言语法sc,适合于嵌入式系统的C语言单元测试框架:SCUNIT
  4. 还没休年假的小伙伴注意了...事关你的合法权益
  5. python文件读取方法
  6. c语言用数组存储高精度数,高精度运算c语言.pptx
  7. java怎么录入4位会员号_[Java源码]键盘输入会员卡号,对其格式、位数进行判断,不符合规则会跳转重新输入 | 学步园...
  8. oracle 表空间 归档,oracle数据库表空间及归档
  9. upper_bound 和lower_bound彻底搞懂
  10. java validate 框架_如何使用validator框架来validatebean