Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
compareNode(referenceNode)

Parameter

referenceNode

Der Node, der mit dem Range verglichen 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

js
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:

js
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.

Browser-Kompatibilität

Siehe auch