提问人:kakakali 提问时间:3/10/2023 最后编辑:kakakali 更新时间:3/11/2023 访问量:73
选择范围内“开始”和“结束”的具体定义
The concrete definitions of "start" and "end" in a selection range
问:
使用 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
更一般地说,考虑内联元素:在什么条件下选择哪个文本/内联/块节点作为锚点/焦点节点?是否有规范(针对特定浏览器)?
答: 暂无答案
评论