在元素内找到插入位置

问题描述 投票:0回答:1

我在contenteditable div中有一个span,我需要弄清楚光标是否在span标签的最后位置。我查看了Selection和Range解决方案,但无法找到实现这一目标的直接方法。

<html>
    <script>
        var selection =  window.getSelection();
        var range = selection.getRangeAt(0);
        //this is what I am trying to achive
        var selection_target = range.selectNodeContents(document.getElementById('target')); 
        var length = selection_target.toString().length;

     </script>
     <body>  
          <div id='target' contenteditable='true'>
             <span>some text(figure cursor position here)</span>
          </div>
      </body>
</html>
html range selection contenteditable getcaretpos
1个回答
0
投票

对于问题中span只有一个子节点是文本节点的情况,您可以检查插入符号是否在其末尾,如下所示:

但是:Kua zxsw指出

码:

http://jsfiddle.net/Wm5Hz/

在一般情况下,事情稍微复杂一些:相同的视觉位置可以用不同的方式表示(例如在文本节点中的最后一个字符之后,在文本节点本身之后,在跨度结束之后),以及跨度是否可以包含元素,然后您需要找到范围内的最后一个文本节点,并将选择与它进行比较。此外,这些都不适用于IE <9,它具有完全不同的API。

© www.soinside.com 2019 - 2024. All rights reserved.