@Derfirm
Noname Developer.

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

Доброго времени суток, возник следующий вопрос.
В первом окне пользователю выводится ссылка, кликая на которую, открывается новая вкладка. В открытой вкладке производим некоторые действия(к примеру оплату) и нам приходит от сервера ответ.
Нужно отследить этот ответ из первой и закрыть вторую.
То бишь по шагам:
Клик по ссылке ->открытые новой вкладки->ответ от сервера во второй вкладке->перехват ответа от сервера во второй вкладке из первой->закрытие второй вкладки.
  • Вопрос задан
  • 2887 просмотров
Решения вопроса 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-запросом проверяет флаг на сервере. Как только флаг изменится, родителская получит положительный ответ от сервера
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы