12 of 17 menu

Forbudt link-overgangsfejl i JavaScript

Lad os sige, at vi har et link:

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

Lad os få vores link i en variabel:

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

Lad os knytte en klik-håndtering til vores link. Vi vil annullere overgangen på linket for at undgå genindlæsning af siden:

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

Det ser ud til, at vi er fuldstændig beskyttet mod uventet adfærd. Det er faktisk ikke tilfældet. Grunden er, at hvis der opstår en syntaktisk fejl i JavaScript, vil koden simpelthen ikke blive udført, blokeringen af linket vil ikke virke, og overgangen på det vil finde sted.

I dette tilfælde vil vi hverken se resultatet af kodeudførelsen eller en fejl i konsollen, fordi siden vil blive genindlæst. Lad os med vilje lave en fejl i koden og se det i praksis:

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

Dette problem har et karakteristisk kendetegn: hvis man kigger i konsollen i øjeblikket af klikket på linket, vil vi et øjeblik se en rød fejl i konsollen, som næsten øjeblikkeligt forsvinder.

Selvfølgelig når vi ikke at læse fejlteksten, hvilket gør det væsentligt sværere at finde fejlen. Der er dog et smart trick. Du skal sætte en hash (#) i linkets href. I dette tilfælde vil overgangen på linket ikke ske, og vi vil se den kastede fejl i konsollen:

<a href="#">link</a>
Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis