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



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

在我看来,你可以从这两个中得到相同的功能。在哪种情况下,有任何特定的情况下,你知道两者中的哪一个使用?

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

在功能上有一些重叠:例如,SelectiondeleteFromDocument()相当于在其所有组件范围上调用deleteContents(),并且您可以使用anchorNode, anchorOffset, focusNodefocusOffset属性在选择中获得最近选定范围的边界。然而,有一些关键的区别:

  • 一个Selection可以包含多个range。然而,目前唯一支持此功能的主要浏览器是Firefox。
  • A Selection可能是"向后的",我的意思是选择的结束边界(由focusNodefocusOffset表示)可能比开始边界(anchorNodeanchorOffset)更早出现在文档中。Range没有方向
  • toString()的工作方式不同。在大多数浏览器中(虽然不是ie9),在Selection对象上调用toString()只返回被选中的可见文本,而在范围上调用toString()将返回范围内所有文本节点的串联,包括那些在<script>元素和通过CSS隐藏的元素。

相关内容

  • 没有找到相关文章

最新更新