在什么场景下`getTargetRanges()`方法会返回多个range对象?
getTargetRanges() 返回多个Range的场景是真实存在的,并非预留的未来适配逻辑,常见触发场景如下:
- 非连续选区操作:在可编辑区域按住Ctrl(Mac系统按住Command)选中多段不相邻的文本,执行删除、输入替换等操作时,触发的
beforeinput事件会返回多个Range,每个Range对应一段选中的内容。 - 批量拼写校正:支持多错误同时校正的输入法或编辑工具触发批量校正输入事件时,每一处需要被替换的错误文本都会对应一个独立的Range。
- 多单元格内容操作:在可编辑表格中选中多个不相邻的单元格内容执行编辑操作时,每个单元格对应的选中内容会生成一个独立Range。
你可以用你提供的示例代码按以下步骤复现多Range的情况:
- 运行代码后点击可编辑区域激活编辑状态
- 按住Ctrl(Mac按Cmd),先用鼠标选中第一段的
Hello文本,再选中第二段的tyypo文本,构造两段不连续的选中内容 - 按下删除键或者直接输入新内容,即可触发长度大于1的判断逻辑,弹出alert。
目前Chrome、Firefox、Safari 14及以上版本的主流现代浏览器都已支持多Range返回逻辑,你做测试覆盖上述场景即可。
内容的提问来源于stack exchange,提问作者David Mulder
相关产品推荐
相关产品推荐

