12 of 17 menu

자바스크립트에서 차단된 링크 이동 오류

링크가 있다고 가정해 봅시다:

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

변수에 링크를 가져옵니다:

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

링크에 클릭 이벤트 핸들러를 바인딩하겠습니다. 이때 페이지 새로고침을 방지하기 위해 링크 이동을 취소하겠습니다:

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

예기치 않은 동작으로부터 완전히 안전해진 것 같습니다. 사실은 그렇지 않습니다. 문제는 구문 오류가 발생하면 자바스크립트 코드가 실행되지 않고, 링크 차단이 작동하지 않아 링크로 이동이 수행된다는 점입니다.

이 경우 코드 실행 결과도, 콘솔의 오류도 보지 못할 것입니다. 페이지가 새로고침되기 때문입니다. 의도적으로 코드에 오류를 만들어서 실제로 확인해 보겠습니다:

link.addEventListener('click', function(event) { thiss.textContent = 'text'; // 구문 오류 event.preventDefault(); });

이러한 문제는 특징적인 징후가 있습니다: 링크를 클릭하는 순간 콘솔을 보면 콘솔에 빨간색 오류가 순간적으로 나타났다가 거의 즉시 사라지는 것을 볼 수 있습니다.

물론 오류 메시지를 읽을 시간은 없습니다. 이는 오류 찾기를 상당히 어렵게 만듭니다. 그러나 교묘한 방법이 있습니다. 링크의 href에 #(해시)를 넣어야 합니다. 이 경우 링크 이동이 발생하지 않고 콘솔에 출력된 오류를 볼 수 있습니다:

<a href="#">link</a>
한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부