Signatur
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
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();
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}`);
// 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 mitcloneNode(true)ist gleich, aber nicht derselbe Knoten. - Fehler bei
null:el.isSameNode(x)wirft einenTypeError, wennelselbstnullist, etwa nach einem erfolglosenquerySelector().el === xwirft 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.