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

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

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