유저가 페이지를 벗어날 때마다, 특정 처리를 해줘야 하는 상황엔 beforeunload 를 사용.

유저가 페이지를 벗어날 때 처리해 줄 코드와 함께 beforeunload event를 리스너에 등록하여 사용.

※ 뒤로가기, refresh 뿐만 아닌 submit, 브라우저 close 경우에도 beforeunload 리스너가 동작하게 되므로 주의.

 

[ Sample ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$(window).on("beforeunload", callback);
 
function callback(){
    console.log("beforeunload callback !");
    //do something
    return "changes will be lost!";
}
 
function off(){
    console.log("beforeunload turn off !");
    $(window).off("beforeunload");
}
 
<button type="button" onclick="javascript:off();">리스너끄기</button>
cs

 

submit 을 제외한 모든 페이지 전환에 특정 함수를 실행시키고 싶은 경우 :

.off("~") 를 사용하여 submit 시엔 beforeunload 이벤트 핸들러를 제거.

 

[ Example ]

1
2
3
4
5
6
7
8
9
10
11
12
$(document).ready(function () {
    // Warning
    $(window).on('beforeunload'function(){
        //do something
        return "Any changes will be lost";
    });
    // Form Submit
    $(document).on("submit""form"function(event){
        // disable warning
        $(window).off('beforeunload');
    });
}
cs

 

 

반응형

+ Recent posts