Отправить запрос обновления на другую страницу, открытую в браузере

У меня есть страница A, которая создает окно со страницей B.

Страница B запрашивает у пользователя некоторые данные, вставляет их в базу данных и затем закрывается. После вставки я пытаюсь автоматически обновить страницу A (это может быть как от A, видящего, что B закрыт, либо с помощью функции, инициированной самим B до закрытия (или после?))

Как я могу это сделать?

JavaScript window.open() возвращает ссылку на экземпляр открытого окна. Вы можете использовать его для настройки onunload событий onunload , например:

 var hWndB = window.open('somepage.php'), hWndA = window.self; hWndB.onunload = function(){ hWndA.location.reload(); } 

Вы можете использовать событие onunload и window.opener . Например.

 window.addEventListener('unload', function() { window.opener.location.reload(); }, false); 

Или вы можете использовать jquery, чтобы у вас не было проблем с совместимостью с crossbrowser:

 $(window).on('unload', function() { window.opener.location.reload(); }); 

Также есть другое событие, называемое onbeforeunload которое вы можете взглянуть.

РЕДАКТИРОВАТЬ

Для более старого браузера вы можете использовать хак, который @CORRUPT предоставил в комментариях: window.open () возвращает undefined или null для второго вызова

Вариант «Видение B закрыто»:

 //winb is global variable winb=window.open(blah blah); //Existing: A opens B window.setTimeout(checkWinB,1000); function checkWinB() { if (winb.closed()) refreshMySelf(); else window.setTimeout(checkWinB,1000); } 

Вариант «B ударяет A»:

 opener.rerfreshMySelf(); window.close() //Existing: B closes 

Оба варианта нуждаются в функции refreshMySelf() для обновления страницы. Как это сделать, зависит от механизма страницы, но отправной точкой для страницы, отличной от AJAX, является

 function refreshMySelf() { location.reload(); }