This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

The Range.compareNode() returns a constant indicating the position of the Node.

The possible values are:

Node starts before the Range
Node ends after the Range
Node starts before and ends after the Range
Node starts after and ends before the Range, i.e. the Node is completely selected by the Range.
Warning: This method has been removed from Gecko 1.9 and will not exist in future versions of Firefox, which was the only browser implementing it; you should switch to compareBoundaryPoints() as soon as possible.

The following function can be used as replacement:

function rangeCompareNode(range, node) {
  var nodeRange = node.ownerDocument.createRange();
  try {
  catch (e) {
  var nodeIsBefore = range.compareBoundaryPoints(Range.START_TO_START, nodeRange) == 1;
  var nodeIsAfter = range.compareBoundaryPoints(Range.END_TO_END, nodeRange) == -1;

  if (nodeIsBefore && !nodeIsAfter)
    return 0;
  if (!nodeIsBefore && nodeIsAfter)
    return 1;
  if (nodeIsBefore && nodeIsAfter)
    return 2;

  return 3;


returnValue = range.compareNode( referenceNode );


The Node to compare with the Range.


range = document.createRange();
returnValue = range.compareNode(document.getElementsByTagName("p").item(0));


This method is obsolete; you should use the W3C DOM Range methods (see compareBoundaryPoints()).


This method is not standard and therefore not part of any specification.

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic Support No support 1.0 (1.7 or earlier)
Removed in 3.0 (1.9)
No support No support No support
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support No support 1.0 (1.0)
Removed in 1.0 (1.9)
No support No support No support

See also

Document Tags and Contributors

 Contributors to this page: Mems, teoli, fscholz, jsx, kscarfone, Sheppy, Kirschkern, Nickolay, sicking, Gor1
 Last updated by: Mems,