场景:在一个可编辑的div中要添加弹框里选中的信息,在弹框中选了时间查询数据,点了确定之后,提示选区不存在,无法插入到指定位置。
原因: 在可编辑的div选中选区之后,点击弹框的时间选择器,由于elementUI的时间选择器是一个elput 输入框,所以选区发生变化,导致插入不进去。
解决办法:
在点击弹窗之前或者在点击时间选择器之前,先存当前的选区,等选择完需要的插入数据之后,再恢复之前的选区。
// 保存光标位置
saveSelection () {
if (window.getSelection) {
const sel = window.getSelection()
if (sel.getRangeAt && sel.rangeCount) {
return sel.getRangeAt(0)
}
} else if (document.selection && document.selection.createRange) {
return document.selection.createRange()
}
return null
},
// 重置光标位置
restoreSelection (range) {
if (range) {
if (window.getSelection) {
const sel = window.getSelection()
sel.removeAllRanges()
sel.addRange(range)
} else if (document.selection && range.select) {
range.select()
}
}
}```