# :-: 百度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(' '),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,' '))
}
}
```