我认为这个问题很简单,但是我一直无法弄清楚。我使用了一种更简单的解决方案,从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中获取行号,而只是问号位置。
谢谢,如果我遗漏了一些明显的东西,对不起。
最佳答案
Rangy本身没有能力为您提供行号。您在问题中显示的代码中的sel.focusOffset
是元素节点的子节点之间的偏移量,还是文本节点的文本中的偏移量。如果您觉得它与行号相对应,那只是偶然。
基本上,rangy不会在您提出的问题中扮演重要角色。能够提供行号的任何系统都将能够独立于rangy来工作。
编辑以回应评论:您的问题是“希望它适当地对待行尾(将行尾算作小于下一行的开始,”)。由于对话的主题是Rangy,因此我将“ it”理解为“ Rangy”。 Rangy没有“行尾”的概念,因此它不能以任何方式对待它们。
关于javascript - 使用Rangy库在contentEditable div中获得准确的插入位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21896425/