Я пытаюсь добиться следующего:
На странице А у нас есть ссылка с ограниченным доступом к странице Б. Ограничение доступа обрабатывается на стороне сервера в PHP.
Когда пользователь нажимает на эту ссылку, открывается страница Б. мы отображаем модальный диалог на странице A (через javascript) с формой, имеющей ссылку href (B) в качестве действия. (Чтобы дать пользователю немедленную обратную связь. Запасным вариантом является перенаправление его на форму входа, которая перенаправляет его на сайт, к которому он хочет получить доступ.) Эта система работает достаточно хорошо.
Но теперь возникает мой вопрос:
У нас есть ссылки с ограниченным доступом, которые следует открывать в новом окне.
Теперь, если я использую target="_blank" в форме, пользователь остается вне системы на странице, с которой он пришел ( A), которая все еще открыта в фоновом режиме.
Есть ли способ перезагрузить страницу (A, в фоновом режиме) сразу после отправки формы в новое окно (B)?
Моей первой идеей было использовать window.location.reload(); в обработчике отправки на странице A.
Это не работало в chrome и, насколько я понимаю, могло создать состояние гонки.
Другой идеей было бы войти в систему через вызов ajax и открыть новое окно через javascript. Есть ли способ сделать это, не имея дело с блокировщиками всплывающих окон?
Я реализовал идею LostSource (см. ниже) с одним небольшим дополнением.
Поскольку мне нужно перезагрузить только один раз, таймер setInterval можно остановить, если cookie изменился.
var ri=setInterval(function() {
if(oldCookie != document.cookie) {
// assuming a login happened, reload page
clearInterval(ri);
window.location.reload();
}
},1000); // check every second
Мне все еще нравится эта идея. stackoverflow - это круто!