关于各浏览器下textarea中光标位置的获取问题详解

申明一下,我这里只是讲的textarea中的有关光标的几种方法,并不是针对整个document的,我相信把textarea中的光标方法弄清楚了的话,其他的就简单多了。

最近接触到一个新的东西,就是textarea中光标位置的获取。先来说一说我是怎么接触到这个东西的,最近一直在写一个能够通用的评论插件,在这个评论插件中我们加入了表情插入这个功能,也就是技能文字评论,也能表情评论,目前这个插件的样子是这样的

这里写图片描述

就是在做表情插入功能的过程中遇到的这个问题,按照最一般的从头到尾的写评论是不会出问题的,但是如果是评论写了一大段,然后回头想再插入一个表情的时候,问题就出现了。

这里写图片描述

那就是你必须知道你当前光标所在的位置是在哪里。。。

问题出现了当然得解决了,于是很正常的想法,当然是网上各种搜了,当然找到了获取光标位置的方法,但是很多都只是对其中某一个或某几个方法或属性的介绍或者是简单说明,并不是特别全面,所以在这里把握自己学到的一些关于光标位置获取的东西做一个小小的分享与总结

兼容性是老生常谈的一个问题,所以每一个功能的实现都有几种兼容性的实现方法,光标问题的兼容性主要表现在IE非IE浏览器下面,也就是要实现IE非IE的兼容性方法。首先,这里要说的是textarea中选中文本的获取

IE下选中内容的获取是很简单的,直接通过 document.selection.createRange()这个方法就可以获取到选中区域的内容,该方法返回的是一个对象,其中text字段就是选中的文本。

这里写图片描述

非IE下则是通过对象的selectionStart(选中范围的起点)和selectionEnd(选中范围的末点),然后通过截取字符串substring来获取选中范围的.

几个TextRange(顾名思义,TextRange就可以理解为文本的选择范围)的常用属性及方法:

属性

  • boundingWidth 获取绑定TextRange对象的矩形的宽度

  • boundingHeight 获取绑定TextRange对象的矩形的高度

  • boundingLeft 获取绑定TextRange对象的矩形左边缘和包含TextRange对象的左侧之间的距离

  • boundingTop Retrieves the distance between the top edge of the rectangle that bounds the TextRange object and the top side of the object that contains the TextRange.

  • offsetLeft 获取对象相对于版面或由offsetParent属性指定的父坐标的计算左侧位置

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值