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 相关文章推荐
JQuery在光标位置插入内容的实现代码
Jun 18 Javascript
js使用eval解析json实例与注意事项分享
Jan 18 Javascript
浅析创建javascript对象的方法
May 13 Javascript
Javascript之面向对象--封装
Dec 02 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
jquery实现限制textarea输入字数的方法
Sep 06 jQuery
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 Javascript
纯JS开发baguetteBox.js响应式画廊插件
Jun 28 Javascript
vue中的v-model原理,与组件自定义v-model详解
Aug 04 Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 Javascript
Vue多选列表组件深入详解
Mar 02 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
解决cPanel无法安装php5.2.17
2014/06/22 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
php中文验证码实现方法
2015/06/18 PHP
动态添加js事件实现代码
2009/03/12 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
使用Python获取Linux系统的各种信息
2014/07/10 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
python基于Selenium的web自动化框架
2019/07/14 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
为什么要使用servlet
2016/01/17 面试题
党校培训思想汇报
2013/12/30 职场文书
网吧消防安全责任书
2014/07/29 职场文书
离婚协议书范本
2015/01/26 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
公司回复函格式
2015/07/14 职场文书
2016年教代会开幕词
2016/03/04 职场文书