Я знаю, что это очень старый вопрос, но я нашел лучший способ сделать это: Обмен сообщениями между документами :
$('a#popup').on('click', function(event) {
event.preventDefault();
$this = $(this);
authenticationWindow = window.open($this.href, 'authenticationPopup');
});
window.addEventListener('message', function (evt) {
// simplified, should check for matching event.origin
if (event.data == 'OK' && event.origin == window.location.protocol+'//'+window.location.host) {
authenticationWindow.close();
}
});
В то время как из всплывающего окна (конечно, если вы управляете им, по крайней мере, на последней странице) вам нужно это:
opener.postMessage('OK', window.location.protocol+'//'+window.location.host);
Это закроет всплывающее окно и позволит вам делать другие вещи, такие как обновление данных через Ajax или перезагрузить страницу.