html + css + javascript

[바닐라 JS로 크롬 앱 만들기] link, preventDefault

sping2 2023. 6. 24. 13:10

링크

href=...

라인을 추가해서 링크를 만들어주자.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="style.css" />
    <title>Momentum</title>
  </head>
  <body>
    <form id="login-form">
      <input required maxlength="15" type="text" placeholder="What is your name?" />
      <input type="submit" value="Log in" />
    </form>
    <a href="https://nomadcoders.co">Go to courses</a>
    <script src="app.js"></script>
  </body>
</html>


preventDefault

저번 포스팅에서 form의 기본 동작이 submit이라는 걸 알게 되었다. 이걸 preventDafault로 막았다.

링크의 기본 동작은 다른 페이지로 바뀌는 것이다. 이것도 마찬가지로 막아보자.

const loginForm = document.querySelector('#login-form');
const loginInput = document.querySelector('#login-form input');

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

function onLoginSubmit(event) {
  event.preventDefault(); //새로고침 막기
  console.log(loginInput.value);
}

function handleLinkClick(event) {
  event.preventDefault(); //다른 페이지로 이동하지 않음.
  console.log(event);
}

loginForm.addEventListener('submit', onLoginSubmit);
link.addEventListener('click', handleLinkClick);

링크를 아무리 많이 눌러도 그 페이지로 이동하지 않고, 콘솔 창에 이벤트 정보만 출력된다. 이 이벤트 이름은 PointerEvent이다.