我想知道 JavaScript 中范围对象和选择对象之间的区别。
在我看来,您可以从这两者中获得相同的功能。在哪种情况下,您在特定情况下知道使用两者中的哪一个?
最佳答案
根本区别在于 Selection
代表用户的选择,而Range
表示文档的连续部分独立于任何视觉表示。 Selection
可以(几乎)用零个、一个或多个来表示Range
s 但也可以完全独立于选择来创建和修改范围。
在功能上有一些重叠:例如,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 隐藏的元素。
关于javascript - 浏览器中范围和选择的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5573030/