Vue中div contenteditable 的光标定位方法


Posted in Javascript onAugust 25, 2018

在Vue做项目时,做了一个div[contenteditable=true]的组件作为文本输入框

在非手动输入值后,光标会丢失,经测试以下这段代码可用,直接将光标定位到最后

function keepLastIndex(obj) {
  console.log(obj)
  console.log(window.getSelection)
  console.log(document.selection)
  if (window.getSelection) { //ie11 10 9 ff safari
   obj.focus(); //解决ff不获取焦点无法定位问题
   var range = window.getSelection(); //创建range
   range.selectAllChildren(obj); //range 选择obj下所有子内容
   range.collapseToEnd(); //光标移至最后
  } else if (document.selection) { //ie10 9 8 7 6 5
   var range = document.selection.createRange(); //创建选择对象
   //var range = document.body.createTextRange();
   range.moveToElementText(obj); //range定位到obj
   range.collapse(false); //光标移至最后
   range.select();
  }
 }

在实际使用时,vue.$emit是一个异步函数,最好在调用这个定位前加上一定的延迟,经测试,5ms就可以了

setTimeout(()=>{
 keepLastIndex(e.target)
},5)

以上这篇Vue中div contenteditable 的光标定位方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
根据分辨率不同,调用不同的css文件
Aug 25 Javascript
JS模拟多线程
Feb 07 Javascript
JQuery each()函数如何优化循环DOM结构的性能
Dec 10 Javascript
js的2种继承方式详解
Mar 04 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
Mar 14 Javascript
基于BootStarp的Dailog
Apr 28 Javascript
Bootstrap 轮播(Carousel)插件
Dec 26 Javascript
详解vue-resource promise兼容性问题
Jun 20 Javascript
js实现鼠标拖拽缩放div实例代码
Mar 25 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 Javascript
Vue3中的Refs和Ref详情
Nov 11 Vue.js
vue实现简易音乐播放器
Aug 14 Vue.js
Vue中mintui的field实现blur和focus事件的方法
Aug 25 #Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
Aug 25 #Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
Aug 25 #Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
Aug 25 #Javascript
对vue 键盘回车事件的实例讲解
Aug 25 #Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
Aug 25 #Javascript
vue 自定义指令自动获取文本框焦点的方法
Aug 25 #Javascript
You might like
php 多个submit提交表单 处理方法
2009/07/07 PHP
php实现的简单日志写入函数
2015/03/31 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
javascript 写类方式之十
2009/07/05 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
搭建vue开发环境
2018/07/19 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
python判断数字是否是超级素数幂
2018/09/27 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
毕业典礼演讲稿
2014/05/13 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
工作会议方案
2014/05/21 职场文书
政工例会汇报材料
2014/08/26 职场文书
学校食堂管理制度
2015/08/04 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android