본문 바로가기
자바스크립트 - Javascript

[JavaScript] preventDefault 란, event.preventDefault, preventDefault()

by devscb 2023. 3. 22.
반응형



[JavaScript] preventDefault 란, event.preventDefault, preventDefault()

자바스크립트 메소드중 preventDefault 라는 녀석이 있습니다.
이 메소드는 브라우저의 기본 동작을 실행하지 않도록 하는 메소드입니다.

기본적인 동작이 정해져 있는 대표적인 예시는 다음과 같은 것들이 있습니다.

1) checkbox태그 클릭시 체크가 됨.
2) a태그 클릭시 href 속성에 적힌 url로 이동
3) form 태그 안 submit 버튼클릭시 action 속성값으로 파라미터 전달하면서 페이지 이동


예를들어 아래와 같은 html 파일을 생성하여 수행해봅시다.


<html>
<input type="checkbox" />
<a href="https://google.com"> google</a>
<form action="google.com">
<input type="text" />
<input type="submit" />
</form>
</html>



각 태그들에 대해 마우스 클릭을 하면 아래와 같이 반응을 하게 됩니다.

 

 

<checkbox를 눌렀을 때 : checkbox가 체크됨>

 

 

<a> 태그를 눌렀을때 : 링크로 이동됨

 

submit을 눌렀을때 : action하는 곳으로 이동됨




이러한 동작을 막기 위해 각 태그별로 preventDefault를 이벤트 리스너에 등록하면
기본동작을 막을 수 있습니다.
작성 예시는 아래와 같습니다.
 preventDefault() 이후에 alert창을 띄우도록 하였습니다.
그러면 창을 이동하지 않고 alert 창만 띄우겠지요.


<html>
<script>
window.onload = function(){
document.getElementById("checkbox").addEventListener("click", function(event){
   event.preventDefault();
   window.alert('test');
});
document.getElementById("anchor").addEventListener("click", function(event){
   event.preventDefault();
   window.alert('test');
});
document.getElementById("form").addEventListener("submit", function(event){
   event.preventDefault();
   window.alert('test');
});

</script>
<input type="checkbox" id="checkbox" />
<a href="https://google.com" id="anchor">google</a>
<form action="https://google.com" id="form">
<input type="text" />
<input type="submit" />
</form>
</html> 



이렇게 작성후 각각을 클릭하면, 아까와는 다르게 아무런 alert창만 뜨고, 기본 동작을 안하는것을 확인할 수 있습니다.

 

총평


우연히 preventDefault라는게 있는것을 알게 되었는데, 제가 코드를 작성할때 이 메소드를 써본 적은 없습니다.
과연 무슨필요가 있을지 싶다라는 생각이 듭니다.

보통 HTML 태그의 기본 이벤트를 인지하고 사용하기에 굳이 필요한가 싶기도 하고,
굳이 기본동작에 해당하는 이벤트를 수행하지 않게 하려면 태그를 바꾸는 명료한 방법도 있습니다.
제 생각으로는 SEO 떄문에 태그를 사용한다거나, 크로스 브라우징이 문제될만한 요소들에 대해서 쓸 수 있지 않을까 싶습니다.
굳이 이것을 알고 잘 써먹어야겠다는 생각을 딱히 하지는 않고, 이런게 있구나라는 생각을 가지고,
자바스크립트로 이런것도 할 수 있구나 라는 것을 알아두기만 하면 다른 코드를 읽을 때 언젠가 한번 마주치지 않을까 싶습니다.


#자바스크립트,#스크립트,#preventDefault,#javascript,#script,#js,#event

https://devscb.com/post/163

 

[JavaScript] What is preventDefault, event.preventDefault, preventDefault()

preventDefault, event.preventDefault, preventDefault()Among the JavaScript methods, there is a thing called preventDefault.This method disables the browser’s default behavior. Representative examples

devscb.com

 

728x90
반응형

댓글