Visit Mozilla.org

DOM:range.compareNode

From MDC

« Gecko DOM Reference

Contents

[edit] Summary

Obsolete

Returns a constant (see notes).

[edit] Syntax

returnValue = range.compareNode( referenceNode );

[edit] Parameters

referenceNode 
The Node to compare with the Range.

[edit] Example

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

[edit] Notes

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

Warning: This method has been removed from Gecko 1.9 and will not exist in future versions of Firefox; 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 {
    nodeRange.selectNode(node);
  }
  catch (e) {
    nodeRange.selectNodeContents(node);
  }
  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;
}

The above method returns one of this constants:

NODE_BEFORE = 0 
Node starts before the Range
NODE_AFTER = 1 
Node ends after the Range
NODE_BEFORE_AND_AFTER = 2 
Node starts before and ends after the Range
NODE_INSIDE = 3 
Node starts after and ends before the Range, i.e. the Node is completely selected by the Range.

[edit] Specification

This method is not part of specification.