2

如果我在<p> some text <b> some oth|er text </b> bla bla </p>哪里| 是插入符号,我想获得相对于 p 标签节点的偏移量,有没有办法可以找到相对于 p 的偏移量?

现在我通过这个得到选择的偏移量:

var range = window.getSelection().getRangeAt(0); 
var offset = range.startOffset;

但是,这会返回相对于粗体标签的偏移量。

我需要这个,因为我正在用 Javascript 开发一个编辑器,并且我需要自己实现输入功能,因为我正在使用这个编辑器进行实时协作。当有人在 p 标签的子项中间按下回车键时,我发现了这个问题。

谢谢你的帮助 :)

4

1 回答 1

1

可能有更好的方法来实现这一点,但我还没有玩足够的选择和范围。但是,我在想,由于您已经知道相对于b标签的字符偏移量,因此您只需将b标签之前的文本节点中包含的字符数添加到计数中即可知道总偏移量。

b我相信您可以通过执行类似的操作来获取标签的父节点, range.startContainer.parentNode.

然后,您可以遍历标记childNodesp直到标记childNodes[i]b并且每次遇到文本节点 ( node.nodeType === 3) 时,都添加node.textContent.length到偏移量。

于 2013-04-24T13:57:51.017 回答