Vue中div contenteditable 的光标定位方法
在Vue做项目时,做了一个div[contenteditable=true]的组件作为文本输入框
在非手动输入值后,光标会丢失,经测试以下这段代码可用,直接将光标定位到最后
functionkeepLastIndex(obj){ console.log(obj) console.log(window.getSelection) console.log(document.selection) if(window.getSelection){//ie11109ffsafari obj.focus();//解决ff不获取焦点无法定位问题 varrange=window.getSelection();//创建range range.selectAllChildren(obj);//range选择obj下所有子内容 range.collapseToEnd();//光标移至最后 }elseif(document.selection){//ie1098765 varrange=document.selection.createRange();//创建选择对象 //varrange=document.body.createTextRange(); range.moveToElementText(obj);//range定位到obj range.collapse(false);//光标移至最后 range.select(); } }
在实际使用时,vue.$emit是一个异步函数,最好在调用这个定位前加上一定的延迟,经测试,5ms就可以了
setTimeout(()=>{ keepLastIndex(e.target) },5)
以上这篇Vue中divcontenteditable的光标定位方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。