此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Selection:getRangeAt() 方法

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

Selection 接口的 getRangeAt() 方法会返回一个表示当前选中范围的 Range 对象。

如果所选范围的端点位于某个影子树中,那么 JavaScript 将无法访问这些影子节点,此方法应当将该范围重新限定为包含该端点的宿主元素。在实际情况下,大多数浏览器尚未实现这一行为,因此返回的范围结果是不可预测的。

备注:当在可能包含影子根的节点内进行选择时,可以使用 Selection.getComposedRanges()(如果浏览器支持)来获取位于影子树内的选区范围,或者将选区可靠地重新限定到宿主节点上。

语法

js
getRangeAt(index)

参数

index

要返回的范围的从零开始的索引。如果该数为负数,或大于等于 Selection.rangeCount,将会导致错误。

返回值

指定的 Range 对象。

示例

js
let ranges = [];

const sel = window.getSelection();

for (let i = 0; i < sel.rangeCount; i++) {
  ranges[i] = sel.getRangeAt(i);
}
/* ranges 数组中的每一项现在都是一个 range 对象,
 * 用来表示当前选区中的其中一个范围 */

规范

Specification
Selection API
# dom-selection-getrangeat

浏览器兼容性

参见