W3cubDocs

/DOM

Range

The Range interface represents a fragment of a document that can contain nodes and parts of text nodes.

A range can be created using the createRange() method of the Document object. Range objects can also be retrieved by using the getRangeAt() method of the Selection object or the caretRangeFromPoint() method of the Document object.

There also is the Range() constructor available.

Properties

There are no inherited properties.

Range.collapsed Read only
Returns a Boolean indicating whether the range's start and end points are at the same position.
Range.commonAncestorContainer Read only
Returns the deepest Node that contains the startContainer and endContainer nodes.
Range.endContainer Read only
Returns the Node within which the Range ends.
Range.endOffset Read only
Returns a number representing where in the endContainer the Range ends.
Range.startContainer Read only
Returns the Node within which the Range starts.
Range.startOffset Read only
Returns a number representing where in the startContainer the Range starts.

Constructor

Range()
Returns a Range object with the global Document as its start and end.

Methods

There are no inherited methods.

Range.setStart()
Sets the start position of a Range.
Range.setEnd()
Sets the end position of a Range.
Range.setStartBefore()
Sets the start position of a Range relative to another Node.
Range.setStartAfter()
Sets the start position of a Range relative to another Node.
Range.setEndBefore()
Sets the end position of a Range relative to another Node.
Range.setEndAfter()
Sets the end position of a Range relative to another Node.
Range.selectNode()
Sets the Range to contain the Node and its contents.
Range.selectNodeContents()
Sets the Range to contain the contents of a Node.
Range.collapse()
Collapses the Range to one of its boundary points.
Range.cloneContents()
Returns a DocumentFragment copying the nodes of a Range.
Range.deleteContents()
Removes the contents of a Range from the Document.
Range.extractContents()
Moves contents of a Range from the document tree into a DocumentFragment.
Range.insertNode()
Insert a Node at the start of a Range.
Range.surroundContents()
Moves content of a Range into a new Node.
Range.compareBoundaryPoints()
Compares the boundary points of the Range with another Range.
Range.cloneRange()
Returns a Range object with boundary points identical to the cloned Range.
Range.detach()
Releases the Range from use to improve performance.
Range.toString()
Returns the text of the Range.
Range.compareNode()
Returns a constant representing whether the Node is before, after, inside, or surrounding the range.
Range.comparePoint()
Returns -1, 0, or 1 indicating whether the point occurs before, inside, or after the Range.
Range.createContextualFragment()
Returns a DocumentFragment created from a given string of code.
Range.getBoundingClientRect()
Returns a DOMRect object which bounds the entire contents of the Range; this would be the union of all the rectangles returned by range.getClientRects().
Range.getClientRects()
Returns a list of DOMRect objects that aggregates the results of Element.getClientRects() for all the elements in the Range.
Range.intersectsNode()
Returns a boolean indicating whether the given node intersects the Range.
Range.isPointInRange()
Returns a boolean indicating whether the given point is in the Range.

Specifications

Specification Status Comment
DOM
The definition of 'Range' in that specification.
Living Standard Do not use RangeException anymore, use DOMException instead.
Made the second parameter of collapse() optional.
Added the methods isPointInRange(), comparePoint(), and intersectsNode().
Added the constructor Range().
DOM Parsing and Serialization
The definition of 'Extensions to Range' in that specification.
Working Draft Added the method createContextualFragment().
CSS Object Model (CSSOM) View Module
The definition of 'Extensions to Range' in that specification.
Working Draft Added the methods getClientRects() and getBoundingClientRect().
Document Object Model (DOM) Level 2 Traversal and Range Specification
The definition of 'Range' in that specification.
Obsolete Initial specification.

Browser compatibilityUpdate compatibility data on GitHub

Desktop
Chrome Edge Firefox Internet Explorer Opera Safari
Basic support Yes Yes 4
4
Starting with Firefox 13, the Range object throws a DOMException as defined in DOM 4, instead of a RangeException defined in prior specifications.
9 9 Yes
Range() constructor Yes Yes 24 No 15 Yes
cloneContents Yes Yes 4 9 9 Yes
cloneRange Yes Yes 4 9 9 Yes
collapse Yes Yes 4 9 9 Yes
collapsed Yes Yes 4 9 9 Yes
commonAncestorContainer Yes Yes 4 9 9 Yes
compareBoundaryPoints Yes Yes 4 9 9 Yes
compareNode No ? 1 — 3 No No No
comparePoint Yes ? Yes No 15 ?
createContextualFragment Yes ? Yes 11 15 9
deleteContents Yes Yes 4 9 9 Yes
detach Yes
Yes
Since April 2014 this method is a no-op in Chrome.
Yes 4 — 15
4 — 15
Starting in Firefox 15.0, this method is a no-op and has no effect.
9 9 Yes
Yes
Since August 2015 this method is a no-op in WebKit-based browsers.
endContainer Yes Yes 4 9 9 Yes
endOffset Yes Yes 4 9 9 Yes
extractContents Yes Yes 4 9 9 Yes
getBoundingClientRect Yes Yes 4 9 15 ?
getClientRects Yes Yes 4 9 15 5
insertNode Yes Yes 2 9 9 Yes
intersectsNode Yes Yes 17 No 15 ?
isPointInRange Yes Yes Yes No 15 ?
selectNode Yes Yes 4 9 9 Yes
selectNodeContents Yes Yes 4 9 9 Yes
setEnd Yes Yes 4 9 9 Yes
setEndAfter Yes Yes 4 9 9 Yes
setEndBefore Yes Yes 4 9 9 Yes
setStart Yes Yes 4 9 9 Yes
setStartAfter Yes Yes 4 9 9 Yes
setStartBefore Yes Yes 4 9 9 Yes
startContainer Yes Yes 4 9 9 Yes
startOffset Yes Yes 4 9 9 Yes
surroundContents Yes Yes 4 9 9 Yes
toString Yes Yes 4 9 9 Yes
Mobile
Android webview Chrome for Android Edge Mobile Firefox for Android Opera for Android iOS Safari Samsung Internet
Basic support Yes Yes Yes 4
4
Starting with Firefox 13, the Range object throws a DOMException as defined in DOM 4, instead of a RangeException defined in prior specifications.
Yes Yes ?
Range() constructor Yes Yes Yes 24 15 Yes ?
cloneContents Yes Yes Yes 4 Yes Yes ?
cloneRange Yes Yes Yes 4 Yes Yes ?
collapse Yes Yes Yes 4 Yes Yes ?
collapsed Yes Yes Yes 4 Yes Yes ?
commonAncestorContainer Yes Yes Yes 4 Yes Yes ?
compareBoundaryPoints Yes Yes Yes 4 Yes Yes ?
compareNode No No ? No No No ?
comparePoint Yes Yes ? Yes 15 ? ?
createContextualFragment Yes Yes ? Yes 15 ? ?
deleteContents Yes Yes Yes 4 Yes Yes ?
detach Yes Yes Yes 4 — 15
4 — 15
Starting in Firefox 15.0, this method is a no-op and has no effect.
Yes Yes
Yes
Since August 2015 this method is a no-op in WebKit-based browsers.
?
endContainer Yes Yes Yes 4 Yes Yes ?
endOffset Yes Yes Yes 4 Yes Yes ?
extractContents Yes Yes Yes 4 Yes Yes ?
getBoundingClientRect Yes Yes Yes 4 15 ? ?
getClientRects Yes Yes Yes 4 15 ? ?
insertNode Yes Yes Yes 4 9 Yes ?
intersectsNode Yes Yes Yes 19 15 ? ?
isPointInRange Yes Yes Yes Yes 15 ? ?
selectNode Yes Yes Yes 4 Yes Yes ?
selectNodeContents Yes Yes Yes 4 Yes Yes ?
setEnd Yes Yes Yes 4 Yes Yes ?
setEndAfter Yes Yes Yes 4 Yes Yes ?
setEndBefore Yes Yes Yes 4 Yes Yes ?
setStart Yes Yes Yes 4 Yes Yes ?
setStartAfter Yes Yes Yes 4 Yes Yes ?
setStartBefore Yes Yes Yes 4 Yes Yes ?
startContainer Yes Yes Yes 4 Yes Yes ?
startOffset Yes Yes Yes 4 Yes Yes ?
surroundContents Yes Yes Yes 4 Yes Yes ?
toString Yes Yes Yes 4 Yes Yes ?

See also

© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Range