Range - 表示文档的一部分,可以包含节点和部分文本节点
Range
接口表示文档的一部分,可以包含节点和部分文本节点。
可以使用 Document.createRange()
方法来创建范围。也可以通过使用 Selection
对象的 getRangeAt()
方法或 Document
对象的 caretRangeFromPoint()
方法来获得 Range
对象。
还有 Range()
构造函数可以使用。
构造函数
Range()
返回以全局 Document
作为开始和结束的 Range
对象。
属性
没有继承的属性。
Range.collapsed
只读
返回一个 Boolean
,指示范围的起点和终点是否在同一位置。
Range.commonAncestorContainer
只读
返回包含 startContainer
和 endContainer
节点的最深的 Node
。
Range.endContainer
只读
返回 Range
结束的 Node
。
Range.endOffset
只读
返回一个数字,表示 Range
在 endContainer
中的何处结束。
Range.startContainer
只读
返回 Range
开始的 Node
。
Range.startOffset
只读
返回一个数字,表示 Range
在 startContainer
中的起始位置。
方法
没有继承的方法。
Range.setStart()
设置 Range
的起始位置。
Range.setEnd()
设置 Range
的结束位置。
Range.setStartBefore()
设置 Range
相对于另一个 Node
的起始位置。
Range.setStartAfter()
设置 Range
相对于另一个 Node
的起始位置。
Range.setEndBefore()
设置 Range
相对于另一个 Node
的结束位置。
Range.setEndAfter()
设置 Range
相对于另一个 Node
的结束位置。
Range.selectNode()
设置 Range
以包含 Node
及其内容。
Range.selectNodeContents()
设置 Range
以包含 Node
的内容。
Range.collapse()
将 Range
折叠到其边界点之一。
Range.cloneContents()
返回复制 Range
节点的 DocumentFragment
。
Range.deleteContents()
从 Document
中删除 Range
的内容。
Range.extractContents()
将 Range
的内容从文档树移动到 DocumentFragment
中。
Range.insertNode()
在 Range
的开头插入一个 Node
。
Range.surroundContents()
将 Range
的内容移动到新的 Node
中。
Range.compareBoundaryPoints()
将 Range
的边界点与另一个 Range
进行比较。
Range.cloneRange()
返回一个 Range
对象,其边界点与克隆的 Range
相同。
Range.detach()
释放使用的 Range
以提高性能。
Range.toString()
返回 Range
的文本。
Range.compareNode()
返回一个常量,该常量表示 Node
是在范围之前,之后,内部还是周围。
Range.comparePoint()
返回 -1、0 或 1,指示该点是在 Range
之前,内部还是之后。
Range.createContextualFragment()
返回根据给定的代码字符串创建的 DocumentFragment
。
Range.getBoundingClientRect()
返回一个 DOMRect
对象,该对象限制了 Range
的全部内容;这将是 range.getClientRects()
返回的所有矩形的并集。
Range.getClientRects()
返回一个 DOMRect
对象的列表,该列表汇总了 Range
中所有元素的 Element.getClientRects()
结果。
Range.intersectsNode()
返回一个 boolean
,该布尔值指示给定的节点是否与 Range
相交。
Range.isPointInRange()
返回一个 boolean
,指示给定的点是否在范围内。
规范
规范 | 状态 | 备注 |
---|---|---|
DOM Range 的定义 |
现行的标准 | 不再使用 RangeException ,改用 DOMException 。将 collapse() 的第二个参数设为可选。添加了 isPointInRange() ,comparePoint() 和 intersectsNode() 方法。添加了 collapse() 构造函数。 |
DOM Parsing and Serialization Extensions to Range 的定义 |
工作草案 | 添加了 createContextualFragment() 方法。 |
CSS Object Model (CSSOM) View Module Extensions to Range 的定义 |
工作草案 | 添加了 getClientRects() 和 getBoundingClientRect() 方法。 |
Document Object Model (DOM) Level 2 Traversal and Range Specification Range 的定义 |
已过时 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 41 | 9 | 9 | 支持 |
Range() 构造函数 | 支持 | 支持 | 24 | 不支持 | 15 | 支持 |
cloneContents | 支持 | 12 | 4 | 9 | 9 | 支持 |
cloneRange | 支持 | 12 | 4 | 9 | 9 | 支持 |
collapse | 支持 | 12 | 4 | 9 | 9 | 支持 |
collapsed | 支持 | 12 | 4 | 9 | 9 | 支持 |
commonAncestorContainer | 支持 | 12 | 4 | 9 | 9 | 支持 |
compareBoundaryPoints | 支持 | 12 | 4 | 9 | 9 | 支持 |
compareNode | 不支持 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
comparePoint | 支持 | 17 | 支持 | 不支持 | 15 | 支持 |
createContextualFragment | 支持 | 12 | 支持 | 11 | 15 | 9 |
deleteContents | 支持 | 12 | 4 | 9 | 9 | 支持 |
detach | 支持2 | 12 | 4 — 153 | 9 | 9 | 支持4 |
endContainer | 支持 | 12 | 4 | 9 | 9 | 支持 |
endOffset | 支持 | 12 | 4 | 9 | 9 | 支持 |
extractContents | 支持 | 12 | 4 | 9 | 9 | 支持 |
getBoundingClientRect | 支持 | 12 | 4 | 9 | 15 | 支持 |
getClientRects | 支持 | 12 | 4 | 9 | 15 | 5 |
insertNode | 支持 | 12 | 4 | 9 | 9 | 支持 |
intersectsNode | 支持 | 17 | 17 | 不支持 | 15 | 支持 |
isPointInRange | 支持 | 15 | 支持 | 不支持 | 15 | 支持 |
selectNode | 支持 | 12 | 4 | 9 | 9 | 支持 |
selectNodeContents | 支持 | 12 | 4 | 9 | 9 | 支持 |
setEnd | 支持 | 12 | 4 | 9 | 9 | 支持 |
setEndAfter | 支持 | 12 | 4 | 9 | 9 | 支持 |
setEndBefore | 支持 | 12 | 4 | 9 | 9 | 支持 |
setStart | 支持 | 12 | 4 | 9 | 9 | 支持 |
setStartAfter | 支持 | 12 | 4 | 9 | 9 | 支持 |
setStartBefore | 支持 | 12 | 4 | 9 | 9 | 支持 |
startContainer | 支持 | 12 | 4 | 9 | 9 | 支持 |
startOffset | 支持 | 12 | 4 | 9 | 9 | 支持 |
surroundContents | 支持 | 12 | 4 | 9 | 9 | 支持 |
toString | 支持 | 支持 | 4 | 9 | 9 | 支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 未知 | 41 | 未知 | 支持 | 支持 |
Range() 构造函数 | 支持 | 支持 | 未知 | 24 | 未知 | 14 | 支持 |
cloneContents | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
cloneRange | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
collapse | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
collapsed | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
commonAncestorContainer | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
compareBoundaryPoints | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
compareNode | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
comparePoint | 支持 | 支持 | 未知 | 支持 | 未知 | 14 | 支持 |
createContextualFragment | 支持 | 支持 | 未知 | 支持 | 未知 | 14 | 支持 |
deleteContents | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
detach | 支持 | 支持 | 未知 | 4 — 153 | 未知 | 支持 | 支持4 |
endContainer | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
endOffset | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
extractContents | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
getBoundingClientRect | 支持 | 支持 | 未知 | 4 | 未知 | 14 | 支持 |
getClientRects | 支持 | 支持 | 未知 | 4 | 未知 | 14 | 支持 |
insertNode | 支持 | 支持 | 未知 | 4 | 未知 | 10.1 | 支持 |
intersectsNode | 支持 | 支持 | 未知 | 19 | 未知 | 14 | 支持 |
isPointInRange | 支持 | 支持 | 未知 | 支持 | 未知 | 14 | 支持 |
selectNode | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
selectNodeContents | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
setEnd | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
setEndAfter | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
setEndBefore | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
setStart | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
setStartAfter | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
setStartBefore | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
startContainer | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
startOffset | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
surroundContents | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
toString | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 支持 |
1. 从 Firefox 13 开始,Range
对象将引发 DOM 4 中定义的 DOMException
,而不是先前规范中定义的 RangeException
。
2. 从 2014 年 4 月开始,此方法在 Chrome 中不再可用。
3. 从 Firefox 15.0 开始,此方法不可用且无效。
4. 从 2015 年 8 月开始,此方法在基于 WebKit 的浏览器中不再可用。