如何在HTML中相对于祖父母元素获得偏移?

时间:2013-04-24 13:09:09

标签: javascript dom

如果我<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标签的子节点中按Enter键时,我发现了这个问题。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

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

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

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