使用 DOM 标准:
为方便起见,范围的起始节点是它的起始节点,它的起始偏移量是它的起始偏移量,它的结束节点是它的结束节点,它的结束偏移量是它的结束偏移量。
但我不知道什么是“开始”或“结束”。例如(该片段不适用于此演示):
<div class="container" contenteditable="true">
<p>a</p>
<p>b</p>
</div>
document.addEventListener('selectionchange', (e) => {
const sel = window.getSelection()
console.log(sel.anchorNode, sel.anchorOffset)
console.log(sel.focusNode, sel.focusOffset)
console.log('---')
})
如果从“a”之前的位置选择,停在“b”之前的位置。你会得到如下结果(Chromium):
开始:
"a" 0
结束:
<p>b</p> 0
那么为什么最终更喜欢
<p>b</p> 0
而不是文本节点b 0
?
更一般地,考虑内联元素:在什么情况下文本/内联/块节点被选择为锚点/焦点节点?是否有规范(针对特定浏览器)?