files/en-us/web/api/range/comparenode/index.md
{{APIRef("DOM")}}{{deprecated_header}}{{Non-standard_Header}}
The compareNode() method of the {{domxref("Range")}} interface returns a constant indicating the
position of the {{DOMxRef("Node")}}.
compareNode(referenceNode)
referenceNode
Range.A constant indicating the position of the {{DOMxRef("Node")}}. The possible values are:
NODE_BEFORE (0)
NODE_AFTER (1)
NODE_BEFORE_AND_AFTER (2)
NODE_INSIDE (3)
range = document.createRange();
range.selectNode(document.getElementsByTagName("div").item(0));
returnValue = range.compareNode(document.getElementsByTagName("p").item(0));
This method is non-standard. The following function can be used as replacement:
function rangeCompareNode(range, node) {
const nodeRange = node.ownerDocument.createRange();
try {
nodeRange.selectNode(node);
} catch (e) {
nodeRange.selectNodeContents(node);
}
const nodeIsBefore =
range.compareBoundaryPoints(Range.START_TO_START, nodeRange) === 1;
const 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;
}
This method is not standard and therefore not part of any specification.
{{Compat}}