Since June 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
The forEach() method of the Highlight interface executes a provided function once for each Range object in the Highlight object, in insertion order.
Highlight is a Set-like object, so this is similar to using Set.forEach().
forEach(callbackFn) forEach(callbackFn, thisArg)
callbackFunction to execute for each Range object, taking three arguments:
range, keyThe current Range object being processed in the Highlight. As there are no keys in Highlight, the range is passed for both arguments.
highlightThe Highlight object which forEach() was called upon.
thisArgValue to use as this when executing callbackFn.
None (undefined).
The code snippet below shows how create a new highlight with two ranges, and then log the ranges by using the forEach() method:
function logRanges(range, key, highlight) {
console.log(`Highlight object ${highlight} contains range ${range}`);
}
const text = new Text("Time is an illusion. Lunchtime doubly so.");
const range1 = document.createRange();
range1.setStart(text, 0);
range1.setEnd(text, 4);
const range2 = document.createRange();
range2.setStart(text, 21);
range2.setEnd(text, 30);
const myHighlight = new Highlight();
myHighlight.add(range1);
myHighlight.add(range2);
myHighlight.forEach(logRanges);
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
forEach |
105 | 105 | 140 | 91 | 17.2 | 105 | 140 | 72 | 17.2 | 20.0 | 105 | 17.2 |
© 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/Highlight/forEach