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