[Javascript/JQuery]작성중인 페이지 이탈시 경고

Juseong Han·2022년 9월 13일
0

궁금증

가끔 네이버 메일이나 기타 블로그등을 보면 작성중인 데이터가 있는 경우 페이지를 refresh 하거나 기타 다른 url로 이동하려고 하는 경우 다음과 같은 메세지를 본 적이 있을것이다.

이 메세지는 어떻게 구현하는 것일까?

해결법

javascript의 beforeunload 이벤트를 처리해주면 된다.

$(window).bind('beforeunload', function() {
  const isChanged = ...; //페이지 변경 여부
 
  if(isChanged) {
  	return "띄울 메세지";
  }
});

다음과 같이 이벤트를 binding해주면 된다.

그런데 문제가 발생하는 부분은 submit 또는 button-click 이벤트가 발생하여 현재 페이지에서 벗어나려고 할때도 이 코드가 동작한다는 것이다. 이럴 때엔 unbind로 특정한 작업이 이루어질 때 binding을 해제해주면 된다. 예시는 다음과 같다.

$('#btn-save').on('click', function() {
  
	$.ajax(...).done(function () {
      // 성공시 해제
      $(window).unbind('beforeunload');
    });
});
profile
개발이 하고 싶어요💻 개발이 너무 재밌는 Juseong입니다.🖐

0개의 댓글