Можно ли уведомлять родительское окно при закрытии дочернего окна? (в области диффе- ренции)
Можно ли уведомлять родительское окно при закрытии дочернего окна? (в другом домене?)
Попытка обойти window.opener не работает, когда на разных доменах.
Можно ли как-нибудь уведомить вас, когда закрывается дочернее окно?
Ответы
Ответ 1
Вы не можете напрямую получать уведомление о закрытии окна, но вы можете работать, когда дочернее окно было закрыто, проверив closed
на ссылке на объект окна, возвращаемой window.open()
.
Вот пример, который отображает предупреждение в течение 5 секунд после закрытия дочернего окна путем опроса свойства closed
:
var win = open('http://www.google.com');
var intervalId = setInterval(function() {
if (win.closed) {
clearInterval(intervalId);
alert('Window closed! Hoorah!');
}
}, 5000);
Ответ 2
Лучшее решение с двумя фрагментами кода
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()), и вы делаете разницу между закрытием и обновлением popup (post/get)
(проверено в IE8 и FF3)