Проверить, находится ли текущая страница внутри тени? (чтобы я мог закрыть shadowbox и снова открыть эту страницу в главном окне) - PullRequest
0 голосов
/ 26 мая 2010

У меня есть несколько страниц на моем сайте, которые открываются в окне shadowbox, а не в главном окне. Моя проблема заключается в том, что если пользовательский сеанс истекает, то пользователь нажимает на одну из ссылок, которые открываются в теневом ящике, они перенаправляются на страницу входа ВНУТРИ ТЕНЕВОГО ЯЩИКА, чего я не хочу. Я пытался придумать лучший способ справиться с этим - один из способов, который мне показался, который кажется немного неуклюжим, был на странице входа, чтобы проверить, не находимся ли мы в теневом ящике, и закрываем ли мы его и перенаправить родительское окно на страницу входа.

а) это похоже на разумный план? Я добавил на свою страницу входа следующее:

  $(document).ready(function(){
    if(window.parent.location != window.location){
      window.parent.location.href = window.location;
    }
  }

но мне нужно дождаться, пока shadowbox завершит загрузку страницы, а затем перенаправить. Так что это работает, но, как я говорю, немного неуклюже. Есть ли лучший способ?

благодарен за любые советы - макс.

Ответы [ 3 ]

1 голос
/ 08 апреля 2011

Я знаю, что это сообщение устарело, но мне недавно пришлось решать ту же проблему, и я подумал, что кто-то еще может столкнуться с этим сообщением в поисках ответа.

Ответы, приведенные выше, отличные, но они не дают хорошего ответа на исходный вопрос, который на самом деле был не «Как проверить, находится ли страница в теневом ящике?», А «Как избежать загрузки страницы в shadowbox и затем загрузка снова после закрытия shadowbox? "

Вот что я сделал:

Код, который проверяет, что активный сеанс перенаправляется на страницу выхода, которая очищает все оставшиеся значения сеанса и отправляет пользователя на страницу входа. Я добавил следующий код на страницу выхода из системы в функции загрузки:

if (window.parent) {
    window.parent.location.replace('your-login-url');
} else {
    window.location.replace('your-login-url');
}

Теперь, когда вызывается страница выхода из системы, она очищает теневую коробку, прежде чем браузер получит какой-либо вид страницы входа. Работает отлично. Надеюсь, это кому-нибудь поможет.

0 голосов
/ 08 сентября 2010

Попробуйте это на странице входа в систему:

var Shadowbox = window.parent.Shadowbox;

Затем проверьте, не определен ли Shadowbox.

0 голосов
/ 26 мая 2010

Используйте isOpen().

http://www.shadowbox -js.com / api.html

Попробуйте this.link.baseURI, чтобы увидеть, совпадает ли это с window.location, если вы хотите получить доступ к расположению браузера внутри shadowbox.

...