可编辑div光标位置

Posted blucelee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可编辑div光标位置相关的知识,希望对你有一定的参考价值。

参考:

https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection

https://developer.mozilla.org/en-US/docs/Web/API/Selection/getRangeAt

https://developer.mozilla.org/en-US/docs/Web/API/Selection/addRange

MDN上提示这些API不稳定。应该是兼容IE9+,谷歌,火狐

1. var sel = window.getSelection()  变量sel是当前页面被选中区域

2. var objRange = sel.getRangeAt(0) 获得选中区域的range对象

   startOffset和endOffset代表了选中区域的起始位置和结束位置,相同时代表了光标位置

  anchorNode有2个值,一个是输入框节点,一个是文本text。

  anchorNode为输入框节点时,startOffset代表了在文本框中的位置,一段文字看成一个整体相当于只占一个位置,一个表情算一个位置。

3. objRange.rangeCount表示选中区域的range对象数量
4. sel.removeAllRanges()可以移除选中区域的range对象

5. document.createRange()可以创建新的range对象

6. sel.addRange(range)可以给选中区域添加range对象

 

基本思路:

当可编辑div失去焦点时,要记录当时的range对象,赋值给一个变量lastRange

当可编辑div重新获得焦点,会有一个默认range对象,startOffset和endOffset都为0

使用sel.removeAllRanges()可以移除选中区域的range对象

使用sel.addRange(lastRange)可以给选中区域添加当时保存的lastRange对象

 

别人家的详细解释和示例:https://segmentfault.com/a/1190000005869372

以上是关于可编辑div光标位置的主要内容,如果未能解决你的问题,请参考以下文章

可编辑DIV 光标位置 处理

可编辑div光标位置

文本编辑器弹出时内容可编辑光标位置在可编辑 div 中

js中,为可编辑div添加表情后如何光标移至最后

请教JS大神,如何在一个可编辑的DIV里,获取当前光标的位置,需要兼容IE9+

如果设置Div 编辑器的光标位置?