使用Rangy Library在contentEditable div中获取Accurate Caret Location

时间:2014-02-20 01:47:17

标签: javascript jquery rangy

我认为这个问题很简单,但我一直无法弄明白。我使用更简单的解决方案来达到一个停止点,以便从Get caret position in contentEditable div获得一个可信的div中的插入位置。我一直试图获得插入位置的行号,并且我已经完成了很多逻辑,但是因为那个处理一行的结束与处理它的开头相同接下来,事实证明这几乎是不可能的。

所以,相反,我一直试图使用rangy库来获取插入位置,希望它能恰当地处理行的结尾(将行的结尾计算为小于下一个的开始,)但我还没有弄明白如何让它以我喜欢的方式运作。我的代码如下所示:

var sel = rangy.getSelection();
var range = sel.getRangeAt(0);
var cursorPos = sel.focusOffset;

当我按Enter键进入一个新行(位置增加1)时似乎工作,但在此之后,caretPos在每行的开头再次从0开始。有没有办法获得整体光标位置,这会占新线?要明确的是,我并没有问如何从rangy,只是插入位置获取行号。

谢谢你,如果我错过了一些明显的东西,我很抱歉。

1 个答案:

答案 0 :(得分:1)

Rangy本身没有能力为您提供行号。您在问题中显示的代码中的sel.focusOffset是元素节点的子节点之间的偏移量或文本节点的文本中的偏移量。如果您认为对应于行号,则这只是偶然。

基本上,rangy不会在你提出的问题中发挥重要作用。无论哪种系统能够提供行号,都能够独立地工作。

编辑以回应评论:你的问题是“希望它适当地处理行的结束(将行的结尾计算为小于下一行的开头)”。由于谈话的主题是Rangy,我将“它”理解为“Rangy”。 Rangy没有“终点线”的概念,所以不能以任何方式对待它们。