У меня есть страница 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(); }