다음과 같이 페이지를 벗어나기 전에, ‘수정사항이 있으니 다시 한번 확인해보세요’라는 메시지를 구현하는 방법에 대한 정리입니다.
Javascript의 window.onBeforeUnload Event를 이용한 기능입니다.
실행시점
window.onBeforeUnload Event는 Window개체가 Unload되기 전에 실행됩니다. 정확하게 다음과 같은 시점이 있을 수 있습니다. 다만 IE 7, 8에서는 버그로 인해 다르게 동작하는 경우도 있으므로 참고가 필요합니다.
- 창이나 탭을 닫을 때
- 새로고침, 앞, 뒤로 이동버튼 클릭 시
- location.href 변경
- Form Submit 발생 시
- A Tag 클릭 시
- HREF에 URL을 지정한 경우: 발생
- HREF에 #을 지정한 경우: 발생 안함
- HREF에 javascript:void(0)을 지정한 경우: 발생 안함
(IE7, 8에서는 onbefureunload이벤트가 발생하는 오류가 존재합니다.)
- Iframe 내부에서 로드된 경우 Iframe의 Src가 변경될 경우
구현방법
02 |
$(window).bind( 'beforeunload' , function() |
09 |
return '변경된 사항이 있습니다. 페이지에서 나가시겠습니까?' ;<br> |
14 |
$( 'form' ).submit(function() |
16 |
$(window).unbind( 'beforeunload' ); |
기타 확인사항
Firefox에서는 다음 그림과 같이, 지정한 안내텍스트가 출력되지 않는 버그가 있습니다. 곧 수정될 것이라고 하지만, 현재 Version 27까지도 수정되지 않은 상태입니다.
출처: http://nsinc.tistory.com/101 [NakedStrength Inc.]