浏览器中范围和选择之间的差异

Gun*_*ife 22 html javascript browser range selection

我想知道JavaScript中范围和选择对象之间的区别.

在我看来,你可以从这两个中的任何一个获得相同的功能.在哪种情况下,您是否知道两者中哪一个使用?

Tim*_*own 31

根本区别在于a Selection表示用户的选择,而Range表示文档的连续部分,与任何视觉表示无关.A Selection(几乎)可以用零,一个或多个Ranges表示,但也可以完全独立于选择创建和修改范围.

在功能方面有些重叠,例如:Selection的deleteFromDocument()相当于调用deleteContents()其所有成分范围,并且可以使用获得最近选定范围的边界在选择anchorNode,anchorOffset,focusNode和focusOffset属性.但是,有一些重要的区别:

  • A Selection可能包含多个范围.但是,目前支持此功能的唯一主要浏览器是Firefox.
  • A Selection可以是"向后",我的意思是选择的结束边界(由focusNode和表示focusOffset)可以在文档中比起始边界(anchorNode和anchorOffset)更早出现.范围没有方向.
  • toString()工作不同.在大多数浏览器中(尽管特别是IE 9),调用toString()一个Selection对象只返回所选的可见文本,而调用toString()一个Range将返回该范围内所有文本节点的串联,包括<script>通过CSS隐藏的元素和元素中的那些节点..