[Javascript] onbeforeunload 호출되지 않는 문제

[Javascript] onbeforeunload 호출되지 않는 문제

window.onload = function(){} 은 당연히 동작, 그런데 window.onbeforeunload = function(){} 이 동작하지 않는 문제.

스크립트 오류가 발생한 것도 아니고, 함수를 잘못된 방식으로 오버라이딩(function window.onbeforeunload(){}) 한 것도 아니었다.

PC 특성인가 싶어서 로컬에 깨끗한 새 html 파일을 만들어 열고 닫았더니 onbeforeunload가 잘 호출된다. 그렇다면 무엇이 문제일까. PC가 문제가 아니라면 페이지의 문제.

PC환경은 윈도우 7 그리고 IE 9 이었다. meta 태그의 content=”IE=EmulateIE8″ 을 브라우저 버전에 맞게 content=”IE=9″로 바꿔주었더니 onbeforeunload가 잘 호출된다.

또 다른 경우. 어떤 페이지는 창이 닫힐 때 onbeforeunload가 잘 동작했는데 쇼모달을 띄웠다가 끄고 창을 닫았더니 동작하지 않았다. 해당 페이지는 content=”IE=9″이 맞았는데, 쇼모달로 띄운 페이지가 content=”IE=5″라고 되어있었다. 이것을 9으로 맞춰주니 잘 되는 것을 확인함. 단, 백 퍼센트 확실하다고는 할 수 없고 우연일 가능성 있음.

참고로 윈도우 7, IE 9 환경에서 페이지 메타태그에 content=”IE=8″이 적혀 있는 경우일지라도, 호환성 보기가 설정되어 있다면 onbeforeunload가 동작한다. 다시 말해 잘 되던 사용자가 안된다고 연락이 온다면 기존에 있던 호환성 보기 설정이 빠졌을 확률이 높다.