在段落祖先的字符数处确定 textNode

Determine textNode at character number of paragraph ancestor

假设我们有以下 HTML:

<p>1234<strong>5678</strong>.</p>

假设如果我们想将“234”视为一个选择,它的 相对于 p 父元素的索引 将是 1-3(使用 0 作为起始指数)。

如何确定段落的字符索引 7 处的节点(例如 textNode)?

显而易见的答案是 textNode 属于 strong 元素:假设文本是 no 选择(例如,有没有 window.getSelection()) 参考?

事实证明这实际上比我想象的要容易一些,但是它可能有局限性(欢迎其他人扩展)。

var tl = 0;//text length, increment per node's textContent.length
for (var i = 0; i < element.childNodes.length; i++)
{
 console.log(i+' = '+ac.childNodes[i].textContent.length);
 tl = (tl + element.childNodes[i].textContent.length);
}

所以当长度突然等于或大于我们正在寻找的任何字符索引引用时,我们可以使用break

可能存在多个嵌套节点的复杂性,例如 em 元素嵌套在 strong 元素中,欢迎其他人对其进行扩展。