Можно ли уведомить родительское окно о закрытии дочернего окна? (в области diff) - PullRequest
12 голосов
/ 23 апреля 2009

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

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

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

Ответы [ 2 ]

13 голосов
/ 27 апреля 2009

Вы не можете напрямую получать уведомления о закрытии окна, но вы можете решить, когда дочернее окно было закрыто, проверив свойство 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);
0 голосов
/ 29 апреля 2009

Лучшее решение с двумя частями кода 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...