|
@@ -30,7 +30,7 @@ export default {
|
|
|
|
|
|
//拆分html
|
|
|
SplitHtmlTag1(el) {
|
|
|
- let temInnerHtml = el.trim();
|
|
|
+ let temInnerHtml = el;
|
|
|
let pattern = /<[^>]+>/g;
|
|
|
let Indexs = [];
|
|
|
let i = 0
|
|
@@ -105,6 +105,20 @@ export default {
|
|
|
}
|
|
|
return arr
|
|
|
},
|
|
|
+ checkBetweenText(data,startIndex,endIndex){
|
|
|
+ var arr = []
|
|
|
+ for(var i = startIndex;i<endIndex;i++){
|
|
|
+ if(data[i].type == 'text'){
|
|
|
+ arr.push(
|
|
|
+ {
|
|
|
+ text: data[i].text,
|
|
|
+ index:i
|
|
|
+ }
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return arr
|
|
|
+ },
|
|
|
//修改html
|
|
|
changeHtml(data,tag){
|
|
|
var startIndex = 0
|
|
@@ -119,6 +133,11 @@ export default {
|
|
|
sign = true
|
|
|
}else{
|
|
|
if(!sign){
|
|
|
+ if(data[i].text.indexOf(' ')!=-1){
|
|
|
+ var a = data[i].text.replace(/ /g,' ')
|
|
|
+ currentIndex += a.length
|
|
|
+ continue
|
|
|
+ }
|
|
|
currentIndex += data[i].text.length
|
|
|
}
|
|
|
|
|
@@ -127,12 +146,20 @@ export default {
|
|
|
endIndex = i
|
|
|
break
|
|
|
}else{
|
|
|
+ if(data[i].text.indexOf(' ')!=-1){
|
|
|
+ var a = data[i].text.replace(/ /g,' ')
|
|
|
+ currentIndex1 += a.length
|
|
|
+ continue
|
|
|
+ }
|
|
|
currentIndex1 += data[i].text.length
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var arr = []
|
|
|
var item = data[startIndex]
|
|
|
+ if(item.text.indexOf(' ')!=-1){
|
|
|
+ item.text = item.text.replace(/ /g,' ')
|
|
|
+ }
|
|
|
if(startIndex == endIndex){
|
|
|
var prevTag = this.checkPrevTag(data,startIndex,tag)
|
|
|
var nextTag = this.checkNextTag(data,startIndex,tag)
|
|
@@ -214,8 +241,41 @@ export default {
|
|
|
var nextTag = this.checkNextTag(data,startIndex,tag)
|
|
|
var betweenTag = this.checkBetweenTag(data,startIndex,endIndex,tag)
|
|
|
var item1 = data[endIndex]
|
|
|
+ if(item1.text.indexOf(' ')!=-1){
|
|
|
+ item1.text = item1.text.replace(/ /g,' ')
|
|
|
+ }
|
|
|
if(betweenTag.length==0){
|
|
|
+ var betweenText = this.checkBetweenText(data,startIndex,endIndex)
|
|
|
+ var prevTag = this.checkPrevTag(data,startIndex,tag)
|
|
|
+ var nextTag = this.checkNextTag(data,endIndex,tag)
|
|
|
+ // if(betweenText.length == 0){
|
|
|
+ if(prevTag.tag == `<${tag}>` && prevTag.tag == `</${tag}>`){
|
|
|
+ arr.push({type:'text',text:item.text.substring(0,this.selectObj.startIndex - currentIndex)})
|
|
|
+ arr.push({type:'tag',text:`</${tag}>`})
|
|
|
+ arr.push({type:'text',text:item.text.substring(this.selectObj.startIndex - currentIndex,item.text.length)})
|
|
|
+ data.splice(startIndex,1,...arr)
|
|
|
+ var len = arr.length
|
|
|
+ arr = []
|
|
|
+ arr.push({type:'text',text:item1.text.substring(0,this.selectObj.endIndex - currentIndex1)})
|
|
|
+ arr.push({type:'tag',text:`<${tag}>`})
|
|
|
+ arr.push({type:'text',text:item1.text.substring(this.selectObj.endIndex - currentIndex1,item1.text.length)})
|
|
|
+ data.splice(endIndex + len - 1,1,...arr)
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ arr.push({type:'text',text:item.text.substring(0,this.selectObj.startIndex - currentIndex)})
|
|
|
+ arr.push({type:'tag',text:`<${tag}>`})
|
|
|
+ arr.push({type:'text',text:item.text.substring(this.selectObj.startIndex - currentIndex,item.text.length)})
|
|
|
+ data.splice(startIndex,1,...arr)
|
|
|
+ var len = arr.length
|
|
|
+ arr = []
|
|
|
+ arr.push({type:'text',text:item1.text.substring(0,this.selectObj.endIndex - currentIndex1)})
|
|
|
+ arr.push({type:'tag',text:`</${tag}>`})
|
|
|
+ arr.push({type:'text',text:item1.text.substring(this.selectObj.endIndex - currentIndex1,item1.text.length)})
|
|
|
+ data.splice(endIndex + len - 1,1,...arr)
|
|
|
+ }
|
|
|
+ // }else{
|
|
|
|
|
|
+ // }
|
|
|
}else{
|
|
|
if(betweenTag.length == 1){
|
|
|
data[betweenTag[0].index].del = true
|
|
@@ -582,9 +642,9 @@ export default {
|
|
|
},
|
|
|
//根据节点获取给定node中offset位置在栏位中的实际位置
|
|
|
getPosition1(baseNode, node, offset) {
|
|
|
-
|
|
|
let path = [];
|
|
|
this.getNodes(baseNode, path);
|
|
|
+
|
|
|
let retIdx = 0;
|
|
|
for (let i = 0; i < path.length; i++) {
|
|
|
if (path[i] == node) {
|