ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# :-: 百度UEditor编辑器如何去除自动默认添加的p标签 发表:管理员  发表时间:2018-04-17 20:42:01   阅读:(4694)次  点击复制分享 UEditor是百度出品的一个很好的文本编辑器,但是在使用过程中,默认的是每次都会自动追加p标签。但是在很多情况下,我并不需要这p标签,为此很闹心。那有没有什么办法消除这自动添加的p标签呢? 方法如下: 首先:打开ueditor.all.js(或ueditor.all.min.js)。 1、搜索修改成false:allowDivTransToP: false 2、再搜索并修改以下: //编辑器不能为空内容 ``` if (domUtils.isEmptyNode(me.body)) { me.body.innerHTML = ' ' + (browser.ie ? ' ' : '<br/>') + ' '; } ``` } 3、搜索“/给文本或者inline节点套p标签”,并且替换以下内容 //给文本或者inline节点套p标签 ```     if (me.options.enterTag == 'p') { var child = this.body.firstChild, tmpNode; if (!child || child.nodeType == 1 && (dtd.$cdata[child.tagName] || isCdataDiv(child) || domUtils.isCustomeNode(child) ) && child === this.body.lastChild) { this.body.innerHTML = '' + (browser.ie ? '' : '<br/>') + '' + this.body.innerHTML; } else { var p = me.document.createElement(''); while (child) { while (child && (child.nodeType == 3 || child.nodeType == 1 && dtd.p[child.tagName] && !dtd.$cdata[child.tagName])) { tmpNode = child.nextSibling; p.appendChild(child); child = tmpNode; } if (p.firstChild) { if (!child) { me.body.appendChild(p); break; } else { child.parentNode.insertBefore(p, child); p = me.document.createElement(''); } } child = child.nextSibling; } } } ``` 4、搜索 “进入编辑器的li要套p标签”,这块也要注释掉 5、注视掉这段 ``` node.className = utils.trim(node.className.replace(/list-paddingleft-\\w+/,'')) + ' list-paddingleft-' + type; ``` 6、最后注视掉: ``` li.style.cssText && (li.style.cssText = ''); ``` 完美解决,以上是整个流程。 # ## UEditor去除复制样式实现无格式粘贴 UEditor内置了无格式粘贴的功能,只需要简单的配置即可。   1、修改ueditor.config.js,开启retainOnlyLabelPasted,并设置为true   2、开启pasteplain,并设为true   3、开启filterTxtRules过滤规则。   注意:filterTxtRules过滤规则默认只过滤p、div、li这几个标签。如果h1~h6这类标签,只是将标签体替换为p标签,并没有将标签体的样式去除。因而通过itextpdf生成pdf时时往往会出现异常。因而,较为完善的做法应该是将所有标签的样式都去掉(将过滤规则改为**{$:{}}**)。   修改后的过滤规则: ``` ~~~ 'filterTxtRules' : function(){ function transP(node){ node.tagName = 'p'; node.setStyle(); } return { //直接删除及其字节点内容 '-' : 'script style object iframe embed input select', 'p': {$:{}}, 'br':{$:{}}, 'div':{$:{}}, 'li':{$:{}}, 'caption':{$:{}}, 'th':{$:{}}, 'tr':{$:{}}, 'h1':{$:{}},'h2':{$:{}},'h3':{$:{}},'h4':{$:{}},'h5':{$:{}},'h6':{$:{}}, 'td':function(node){ //没有内容的td直接删掉 var txt = !!node.innerText(); if(txt){ node.parentNode.insertAfter(UE.uNode.createText(' &nbsp; &nbsp;'),node); } node.parentNode.removeChild(node,node.innerText()) } } }() ~~~ ``` # 解决复制过来文本带有空格 ``` function isText(node, arr) { if(node.parentNode.tagName == 'pre'){ //源码模式下输入html标签,不能做转换处理,直接输出 arr.push(node.data) }else{ arr.push(notTransTagName[node.parentNode.tagName] ? utils.html(node.data) : node.data.replace(/[ ]{2}/g,' ')) } } ```