12 of 17 menu

Link-Übergangsverbotsfehler in JavaScript

Nehmen wir an, wir haben einen Link:

<a href="">link</a>

Holen wir uns unseren Link in eine Variable:

let link = document.querySelector('a');

Binden wir einen Klick-Handler an unseren Link. Heben wir dabei den Übergang über den Link auf, um das Neuladen der Seite zu verhindern:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });

Es scheint, als hätten wir uns vollständig vor unerwartetem Verhalten geschützt. In Wirklichkeit ist das nicht der Fall. Die Sache ist die, dass bei einem syntaktischen Fehler der JavaScript-Code einfach nicht ausgeführt wird, die Blockierung des Links nicht funktioniert und der Übergang darüber stattfindet.

In diesem Fall werden wir weder das Ergebnis der Codeausführung noch einen Fehler in der Konsole sehen, da die Seite neu geladen wird. Machen wir absichtlich einen Fehler im Code und überzeugen uns praktisch davon:

link.addEventListener('click', function(event) { thiss.textContent = 'text'; // syntaktischer Fehler event.preventDefault(); });

Ein solches Problem hat ein charakteristisches Merkmal: Wenn man im Moment des Klicks auf den Link in die Konsole schaut, sehen wir kurz einen roten Fehler in der Konsole, der fast sofort verschwindet.

Natürlich schaffen wir es nicht, den Fehlertext zu lesen, was die Suche danach erheblich erschwert. Es gibt jedoch einen cleveren Trick. Man muss in das href-Attribut des Links ein Doppelkreuz setzen. In diesem Fall findet kein Übergang über den Link statt und wir sehen den in die Konsole geworfenen Fehler:

<a href="#">link</a>
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen