Range: compareNode() Methode
Deprecated
Avoid using this feature in new projects. This feature may be a candidate for removal from web standards or browsers.>
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Die compareNode()-Methode des Range-Interfaces gibt eine Konstante zurück, die die Position des Node angibt.
Syntax
compareNode(referenceNode)
Parameter
referenceNode-
Der
Node, der mit demRangeverglichen werden soll.
Rückgabewert
Eine Konstante, die die Position des Node angibt. Die möglichen Werte sind:
NODE_BEFORE(0)-
Node beginnt vor dem Range
NODE_AFTER(1)-
Node endet nach dem Range
NODE_BEFORE_AND_AFTER(2)-
Node beginnt vor und endet nach dem Range
NODE_INSIDE(3)-
Node beginnt nach und endet vor dem Range, d.h. der Node ist vollständig vom Range ausgewählt.
Beispiele
range = document.createRange();
range.selectNode(document.getElementsByTagName("div").item(0));
returnValue = range.compareNode(document.getElementsByTagName("p").item(0));
Hinweise
Diese Methode ist nicht standardisiert. Die folgende Funktion kann als Ersatz verwendet werden:
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;
}
Spezifikationen
Diese Methode ist nicht standardisiert und daher nicht Teil irgendeiner Spezifikation.