Проверить, находится ли текущая страница внутри 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.

Другие вопросы по тегам