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

Firefox内核浏览器中编辑多Range时保留其他选区的问题咨询

Firefox内核浏览器中编辑多Range时保留其他选区的问题咨询

各位好,我最近在开发一个需要处理多文本选区的功能,遇到了一个百思不得其解的问题,想请教下大家。

我的需求是:点击按钮后,通过循环对多个已选中的文本区域进行操作。因为每次循环都会修改高亮的节点内容,所以需要相应地调整每个Range的start和end位置,来匹配修改后的节点结构。

但奇怪的是,当存在多个选区时,只要我调用Range.setStart或者Range.setEnd方法,所有的选区都会直接消失——也就是所有文本都被取消选中了,而且Selection.type属性会从原来的"Range"变成"Caret"。但如果只有单个选区的话,这套操作完全正常,不会出现任何问题。

我已经花了好几个小时尝试各种办法绕开这个问题,但都没成功,实在是卡在这里了,非常希望能有懂行的朋友给我指点下方向:这是我代码写法有问题,还是Firefox本身的bug呢?

最后补充几个关键的环境和操作细节:

  • 我使用的是Firefox内核的浏览器
  • 多选区的创建方式:按住CTRL键,同时点击拖动鼠标选中不同的文本块
  • 我是通过以下代码获取每个选区对应的Range对象的:
const selection = window.getSelection()
const range = selection.getRangeAt(index)

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 07:09:28