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 相关文章推荐
JS小功能(列表页面隔行变色)简单实现
Nov 28 Javascript
Javascript 遍历页面text控件详解
Jan 06 Javascript
jQuery插件实现无缝滚动特效
Nov 24 Javascript
JS实现左右无缝轮播图代码
May 01 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
Aug 05 Javascript
jQuery检查元素存在性(推荐)
Sep 17 Javascript
Vue精简版风格概述
Jan 30 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
Mar 05 Javascript
通过JS运行机制的角度说说作用域
Mar 12 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
May 29 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
Jul 05 Javascript
angular异步验证器防抖实例详解
Mar 31 Javascript
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
php5 pdo新改动加载注意事项
2008/09/11 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
php json相关函数用法示例
2017/03/28 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
Python多图片合并PDF的方法
2019/01/03 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
学习标兵获奖感言
2014/02/20 职场文书
中学教师师德承诺书
2014/05/23 职场文书
党员三严三实心得体会
2014/10/13 职场文书
2016公司年会主持词
2015/07/01 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js