본문 바로가기

JavaScript/공부공부

[JS] a링크 페이지 이동 막기_javascript:void(0), event.preventDefault()

 

' <a> ' 태그 : 클릭 시 링크로 이동.

' href = "#" ' => 브라우저의 페이지 최상단으로 이동. (페이지 리로드X)

 


 

javascript:void(0)

주로 HTML에서 링크를 클릭했을 때 페이지를 리로드하거나 다른 페이지로 이동하지 않도록 하기 위해 사용.

 - javascript 브라우저에서 링크를 클릭했을 때 JavaScript 코드를 실행하도록 지시하는 프로토콜.

 - void : 결과를 무시하고 'undefined' 를 반환.

-  void(0) : '0'을 평가하지만 그 값을 무시하고 'undefined' 를 반환. 

 


'<a>' 태그의 'href' 속성으로 사용

<head>
    <title>Example</title>
    <script>
        function showAlert() {
            alert("Link clicked!");
        }
    </script>
</head>
<body>
    <a href="javascript:void(0)" onclick="showAlert()">링크</a>
</body>

 

링크 (<a>태그) 클릭 

=> href = "javascript:void(0)" 으로 인해 페이지 이동이나 리로드가 일어나지 않음.

=> href = "javascript:void(0)" 으로 인해 JavaScript 함수인 showAlert()가 실행되어 alert가 뜸.

 


 

event.preventDefault()

<head>
    <script>
        function showAlert(event) {
            event.preventDefault();
            alert("Link clicked!");
        }
    </script>
</head>
<body>
    <a href="#" onclick="showAlert(event)">링크</a>
</body>


링크(<a>태그) 클릭 

=> 이벤트 핸들러인 onclick이벤트 감지 => showAlert() 함수 실행.

=> showAlert() 함수의 event.preventDefault() 로 인해 a태그의 기본동작인 페이지 이동이 일어나지 않음.

 


 

** a태그의 기본동작인 페이지 이동보다 이벤트 핸들러가 더 먼저 실행 **

<head>
    <script>
        function showAlert(event) {
            alert("Link clicked!");
        }
    </script>
</head>
<body>
    <a href="#" onclick="showAlert(event)">링크</a>
</body>

 

링크(<a>태그) 클릭 

=> showAlert()가 실행되어 alert가 뜸.

=>  href = "#" 으로 인해 페이지 최상단으로 이동.