This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.
The Range() constructor returns a newly created Range object whose start and end is the global Document object.
new Range()
None.
In this example we create a new range with the Range() constructor, and set its beginning and end positions using the Range.setStartBefore() and Range.setEndAfter() methods. We then select the range using window.getSelection() and Selection.addRange().
<p>First paragraph.</p> <p>Second paragraph.</p> <p>Third paragraph.</p> <p>Fourth paragraph.</p>
const paragraphs = document.querySelectorAll("p");
// Create new range
const range = new Range();
// Start range at second paragraph
range.setStartBefore(paragraphs[1]);
// End range at third paragraph
range.setEndAfter(paragraphs[2]);
// Get window selection
const selection = window.getSelection();
// Add range to window selection
selection.addRange(range);
| Specification |
|---|
| DOM> # ref-for-dom-range-range②> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
Range |
29 | 15 | 24 | 16 | 8 | 29 | 24 | 16 | 8 | 2.0 | 4.4 | 8 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Range/Range