Задать вопрос
@Derfirm
Noname Developer.

Как перехватить ответ из дочерней вкладки, находясь в родительской?

Доброго времени суток, возник следующий вопрос.
В первом окне пользователю выводится ссылка, кликая на которую, открывается новая вкладка. В открытой вкладке производим некоторые действия(к примеру оплату) и нам приходит от сервера ответ.
Нужно отследить этот ответ из первой и закрыть вторую.
То бишь по шагам:
Клик по ссылке ->открытые новой вкладки->ответ от сервера во второй вкладке->перехват ответа от сервера во второй вкладке из первой->закрытие второй вкладки.
  • Вопрос задан
  • 2940 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
swanrnd
@swanrnd
Издатель HTML5 игр
Храните состояние в local.storage.
Т.е. если что-то делайте на второй, то меняйте local.storage.
А на первой отслеживайте.

Как вариант для старых браузеров хранить состояние на севере и сихрнизироваться раз в несколько секунд.
Ответ написан
somenumboola
@somenumboola
Team Lead in B-online Solutions
Ну вообще когда окно открыто через
window.open();
из него к инициатору открытия можно обратится через
window.opener.document
По крайней мере именно так делали за не имением html5 хранилища.
Далее дело техники. Кастомный ивент на окне родителя. И его вызов в дочернем окне:
Родительское окно (псевдокод, требует отладки)
window.addEventListener('childWinResponse',function(e){
      console.log(e.detail.name);
});

Дочернее окно:
var childWinResponse = new CustomEvent('childWinResponse',{
       'detail' : {
             name : 'Derfirm'
       }
}
window.opener.dispatchEvent(childWinResponse);


UPD: Более того Webkit браузеры устанавливают opener даже для окон открытых через
<a href="... ." target="_blank">... .</a>

javascript.ru/window.opener
javascript.ru/forum/dom-window/13283-vernut-ehleme...
www.codeproject.com/Articles/25388/Accessing-paren...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Только через сервер средствами Ajax. То есть в дочерней вкладке после операции посылаем запрос на сервер. На сервере меняем флаг выполнения операции. В это время родительская вкладка периодически ajax-запросом проверяет флаг на сервере. Как только флаг изменится, родителская получит положительный ответ от сервера
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы