Проверить, находится ли текущая страница внутри shadowbox? (так что я могу закрыть shadowbox и снова открыть эту страницу в главном окне)
У меня есть несколько страниц на моем сайте, которые открываются в окне shadowbox, а не в главном окне. Моя проблема в том, что если пользовательский сеанс истекает, то пользователь нажимает на одну из ссылок, которые открываются в теневом ящике, они перенаправляются на страницу входа ВНУТРИ ТЕНЕВОГО ЯЩИКА, чего я не хочу. Я пытался придумать лучший способ справиться с этим - один из способов, который мне показался, который кажется немного неуклюжим, был на странице входа, чтобы проверить, не находимся ли мы в теневом ящике, и закрываем ли мы его и перенаправить родительское окно на страницу входа.
а) это похоже на разумный план? Я добавил следующее на мою страницу входа, которая работает:
$(document).ready(function(){
if(window.parent.location != window.location){
window.parent.location.href = window.location;
}
}
но я должен ждать, пока shadowbox завершит загрузку страницы, а затем перенаправить. Так что это работает, но, как я говорю, немного неуклюже. Есть ли лучший способ?
благодарен за любой совет - макс
3 ответа
Я знаю, что этот пост старый, но недавно мне пришлось решать ту же проблему, и я подумал, что кто-то еще может встретиться с этим сообщением в поисках ответа.
Ответы, приведенные выше, отличные, но они не дают хорошего ответа на оригинальный вопрос, который на самом деле был не "Как проверить, находится ли страница в теневом ящике?", А "Как избежать загрузки страницы в теневом ящике, а затем загрузка снова после закрытия shadowbox? "
Вот что я сделал:
Код, который проверяет активный сеанс, перенаправляет на страницу выхода, которая очищает все оставшиеся значения сеанса и отправляет пользователя на страницу входа. Я добавил следующий код на страницу выхода из системы в функции загрузки:
if (window.parent) {
window.parent.location.replace('your-login-url');
} else {
window.location.replace('your-login-url');
}
Теперь, когда вызывается страница выхода из системы, она очищает теневое окно, прежде чем браузер получит какой-либо вид страницы входа. Работает отлично. Надеюсь, что это может кому-то помочь.
Использование isOpen()
,
http://www.shadowbox-js.com/api.html
Пытаться this.link.baseURI
чтобы увидеть, если это так же, как window.location
если вы хотите получить доступ к расположению браузера внутри shadowbox.
Попробуйте это на странице входа в систему:
var Shadowbox = window.parent.Shadowbox;
Затем проверьте, не определен ли Shadowbox.