概述Selection 表示用户当前选区,包含锚点与焦点;Range 表示文档的连续片段,可跨节点。编辑器可通过 API 读取/设置选区,进行插入、包裹与高亮等操作。示例const sel = window.getSelection() console.log(sel.anchorNode, sel.focusNode) // 设置选区 const range = document.createRange() range.selectNodeContents(document.querySelector('#article')) sel.removeAllRanges(); sel.addRange(range) // 精准设置 sel.setBaseAndExtent(startNode, 0, endNode, endNode.length || 0) 工程建议同步与模型:将选区状态与内部编辑模型同步;避免 DOM 操作破坏选区。兼容与回退:处理跨元素与空文本节点边界;提供键盘与鼠标并行操作逻辑。无障碍:与 ARIA/朗读协作;保持焦点与选区可见与可控。参考与验证MDN Selection 文档:https://developer.mozilla.org/docs/Web/API/SelectionMDN Range 文档:https://developer.mozilla.org/docs/Web/API/Range

发表评论 取消回复