Существует свойство, которое не является частью какой-либо спецификации W3C. Он называется closed
и будет доступен как
if( window.win.closed ) {
// window was closed
}
Я не уверен в совместимости между браузерами для этого свойства. Я также не уверен, как это ведет себя на доменах с разными источниками. Но если вы попробуете это, пожалуйста, дайте мне и остальной части этого сообщества знать об этом.
Другой вариант - вы сами позаботитесь об уведомлении. Это означает, что вы слушаете onbeforeunload
во всплывающем окне. Когда событие запускается, вы можете использовать HTML5 postMessage
метод для связи между междоменными окнами. Например:
MainWindow:
window.addEventListener('message', function(e) {
if( e.origin === 'http://www.popupdomain.com' ) {
if( e.data === 'closed' ) {
alert('popup window was closed');
}
}
}, false);
Domain2:
window.onbeforeunload = function() {
window.opener.postMessage('closed', 'http://www.popupdomain.com');
};
Единственное предостережение в отношении этого решения заключается в том, что оно совместимо только с браузером, поддерживающим базовый HTML5. Существуют и другие (хитрые) способы междоменной связи в старых браузерах, но, думаю, это другая история.