You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Safari中Range的startContainer属性表现异常的技术问询

跨浏览器选中内容时Range.startContainer的兼容性问题

我搭建了一个简单的测试环境来复现问题:

window.addEventListener("DOMContentLoaded", (event) => {
  document.addEventListener("mouseup", (event) => {
    let selection = document.getSelection();
    let range = selection.getRangeAt(0);
    console.log(range.startContainer);
  });
});
<p>startbuffer<span>test</span>endbuffer</p>

当选中“endbuffer”文本时,Safari中range.startContainer属性指向包裹“test”的<span>元素,而Firefox中该属性指向“endbuffer”对应的文本节点,这才是符合预期的行为。

我需要跨浏览器一致地获取选中内容的startContainer,以便对选中节点执行操作。

我无法理解Safari的这一逻辑,为何一个完全不在选中范围内的节点会成为startContainer?

Safari中Range.startContainer的异常表现

内容的提问来源于stack exchange,提问作者Guesser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:56:00