Лучшее решение с двумя частями кода
1 / во всплывающем окне:
$(window).bind('unload',
function(){
window.opener.PopupUnload(window)
})
2 / в родительском (основное окно):
function PopupUnload(wnd){
setTimeout(function(){ // setTimeout is for IE
if(wnd.closed)
alert('You just killed me...')
},10)
}
с этим кодом, функция не вызывается навсегда (с setInterval ()), и вы делаете различие между всплывающими окнами закрытия и обновления (post / get)
(протестировано в IE8 и FF3)