如果我<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键时,我发现了这个问题。
感谢您的帮助:)
答案 0 :(得分:1)
可能有更好的方法来实现这一点,但我还没有选择和范围。但是,我在想,既然您已经知道相对于b
标记的字符偏移量,您只需要将b
标记之前的文本节点中包含的字符数添加到计数中知道总偏移量。
我相信您可以通过执行类似b
的操作来获取range.startContainer.parentNode
标记的父节点。
然后,您可以遍历childNodes
标记的p
,直到childNodes[i]
为b
标记,并且每次遇到文本节点时node.nodeType === 3
}),您将node.textContent.length
添加到偏移量。