共计 1240 个字符,预计需要花费 4 分钟才能阅读完成。
wangEditor 可通过动静插入代码块来实现编辑性能
如下图所示
可通过双击增加简单文字
代码如下
val = `<b ${'简单文字'}#</b>`
this.editor.cmd.do('insertHTML', val)
然而在插入符号 特地是 ‘{}、()’ 等蕴含内容的符号时,须要将光标挪动到括号两头。
刚开始认为是小问题,网上寻找答案
……
其中讲的最多的 便是 通过 window.getSelection()、Range 等的相干内置办法
接下来便是踩坑:
如 光标在后面
const selection = window.getSelection() || document.getSelection()
var currentRange = selection.getRangeAt(0)
var ele = currentRange.startContainer.parentElement
selection.removeAllRanges()
var yrange = document.createRange()
yrange.selectNodeContents(ele)
yrange.setEnd(ele, 0)
selection.addRange(y![bbb.gif](/img/bVcR0BD)
扭转 yrange.setEnd(ele, 1)
就是不能达到咱们的成果
起初 通过重复测试,得出一个不确定论断:
wangEditor 配合 selection 操作的是整个 dom 而不是 dom 的内容!
目前在我这个我的项目中是这样
只有思维不滑坡 办法总比艰难多
扭转不了 wangEditor 和 selection 只能扭转本人的写法
于是 我在双击拿到括号时做了如下操作:
将括号离开 分成两个 dom
// 将括号离开
const str1 = data[0].fname.slice(0, data[0].fname.length - 1)
const str2 = data[0].fname.slice(data[0].fname.length - 1, data[0].fname.length)
// 最重要局部~!!!!this.editor.cmd.do('insertHTML', `<span > ${str1}</span><span >${str2} </span>`)
// 插入光标
const selection = window.getSelection() || document.getSelection()
var currentRange = selection.getRangeAt(0)
var ele = currentRange.startContainer.parentElement
selection.removeAllRanges()
var yrange = document.createRange()
yrange.selectNodeContents(ele)
yrange.setEnd(ele, 0)
selection.addRange(yrange)
成果如下
实现!
正文完
发表至: javascript
2021-05-14