是否有一种非天真的方法可以从 DOM 偏移量计算逻辑偏移量?
Is there a non-naïve way of calculating a logical offset from a DOM offset?
我有 highlighted some of the text inside my parent element by placing it in <span>
s, and now want to work out what part of it is selected. I have retrieved the Selection
个对象,但它不包含直接有用的信息。我想获得相对于文本开头的偏移量,但它们是相对于突出显示 <span>
s 内的文本节点 并且不与parent.textContent
.
给定:
- 对
parent
元素的引用
该元素仅包含内联元素(具体来说,<span>
s)和文本节点,但它们是任意嵌套的。
Selection.anchorNode
/ Selection.focusNode
这是对包含偏移位置的文本片段的文本节点的引用。
Selection.anchorOffset
/ Selection.focusOffset
这是一个非负整数,其中 0
在第一个字符之前。
有没有比天真的 "explore the tree with a cumulative count" 技术更有效的方法来假装 <span>
不存在以测量 Selection
焦点和锚点?
我不知道它在性能方面是否更有效,您必须对其进行衡量。就代码行而言,Range API 应该使事情变得相当简单。构造从父元素开始到选择开始的范围,然后计算其中包含的字符。
毕竟,Selection
主要是范围的集合。
我有 highlighted some of the text inside my parent element by placing it in <span>
s, and now want to work out what part of it is selected. I have retrieved the Selection
个对象,但它不包含直接有用的信息。我想获得相对于文本开头的偏移量,但它们是相对于突出显示 <span>
s 内的文本节点 并且不与parent.textContent
.
给定:
- 对
parent
元素的引用
该元素仅包含内联元素(具体来说,<span>
s)和文本节点,但它们是任意嵌套的。 Selection.anchorNode
/Selection.focusNode
这是对包含偏移位置的文本片段的文本节点的引用。Selection.anchorOffset
/Selection.focusOffset
这是一个非负整数,其中0
在第一个字符之前。
有没有比天真的 "explore the tree with a cumulative count" 技术更有效的方法来假装 <span>
不存在以测量 Selection
焦点和锚点?
我不知道它在性能方面是否更有效,您必须对其进行衡量。就代码行而言,Range API 应该使事情变得相当简单。构造从父元素开始到选择开始的范围,然后计算其中包含的字符。
毕竟,Selection
主要是范围的集合。