Подтвердить что ты не робот

Можно ли уведомлять родительское окно при закрытии дочернего окна? (в области диффе- ренции)

Можно ли уведомлять родительское окно при закрытии дочернего окна? (в другом домене?)

Попытка обойти window.opener не работает, когда на разных доменах.

Можно ли как-нибудь уведомить вас, когда закрывается дочернее окно?

4b9b3361

Ответ 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)