Start · Sprachen · JavaScript · Referenz · Node.isSameNode()

Node.isSameNode()

Methode

Prüft, ob zwei Verweise auf denselben Knoten zeigen. Die Methode ist ein veralteter Alias für den strikten Vergleich <code>===</code>.

seit JavaScript DOM Level 3 – Baseline: alle Browser (Firefox erst Kategorie: webapi

Signatur

Node.prototype.isSameNode(otherNode)

Beschreibung

Die Methode isSameNode() der Schnittstelle Node gibt true zurück, wenn otherNode genau dasselbe Knotenobjekt ist wie der Knoten, auf dem sie aufgerufen wird. Sie prüft also die Identität und nicht die Gleichheit: Zwei Elemente mit gleichem Tag-Namen, gleichen Attributen und gleichem Inhalt sind trotzdem zwei verschiedene Knoten.

Seit node === otherNode im DOM zuverlässig dasselbe leistet, ist isSameNode() überflüssig. Die DOM-Spezifikation führt sie nur noch aus Kompatibilitätsgründen als „Legacy-Alias“. In neuem Code sollten Sie === verwenden. Das ist kürzer und schneller und funktioniert auch dann, wenn einer der Werte null ist.

Wenn Sie strukturelle Gleichheit prüfen wollen, also ob zwei Knoten denselben Typ, dieselben Attribute und dieselben Kindknoten haben, nutzen Sie stattdessen Node.prototype.isEqualNode().

Parameter

Name Typ Default Beschreibung
$otherNode Pflicht Node | null Der Knoten, mit dem verglichen wird. Bei null ist das Ergebnis immer false.

Beispiele

Identität gegenüber inhaltlicher Gleichheit

const a = document.createElement('p');
a.textContent = 'Hallo';
const b = a.cloneNode(true); // tiefe Kopie mit gleichem Inhalt
const c = a;                 // derselbe Verweis

console.log(a.isSameNode(c));  // Identität
console.log(a.isSameNode(b));  // andere Instanz
console.log(a.isEqualNode(b)); // strukturell gleich
console.log(a === c);          // moderne Alternative
true false true true

Prüfen, ob ein Klick auf dem Container selbst landete (modern mit ===)

const modal = document.createElement('div');
modal.className = 'modal-backdrop';
document.body.append(modal);

modal.addEventListener('click', (event) => {
  // Veraltet: event.target.isSameNode(modal)
  if (event.target === modal) {
    console.log('Klick auf den Hintergrund – Dialog schließen');
    modal.remove();
  }
});

modal.click();
Klick auf den Hintergrund – Dialog schließen

Aktives Element in einer Liste finden

const list = document.createElement('ul');
list.innerHTML = '<li tabindex="0">Eins</li><li tabindex="0">Zwei</li>';
document.body.append(list);

list.children[1].focus();

const index = [...list.children].findIndex((li) =>
  li.isSameNode(document.activeElement) // besser: li === document.activeElement
);
console.log(`Fokussiert: Eintrag ${index}`);
Fokussiert: Eintrag 1

// Wichtig · Fallstricke

  • Veraltet: Die DOM-Spezifikation führt isSameNode() nur noch als Legacy-Alias für ===. Nutzen Sie in neuem Code den strikten Vergleich.
  • Verwechslungsgefahr: isSameNode() prüft die Identität, isEqualNode() die strukturelle Gleichheit. Ein Klon mit cloneNode(true) ist gleich, aber nicht derselbe Knoten.
  • Fehler bei null: el.isSameNode(x) wirft einen TypeError, wenn el selbst null ist, etwa nach einem erfolglosen querySelector(). el === x wirft dagegen keinen Fehler.
  • Kompatibilität: Alle modernen Browser unterstützen die Methode. Firefox hatte sie zwischenzeitlich entfernt und bietet sie erst ab Version 48 wieder an.