2010-05-26 4 views
0

У меня есть пара страниц на моем сайте, которые открываются в окне shadowbox, а не в главном окне. Моя проблема заключается в том, что если пользовательский сеанс истекает, пользователь нажимает на одну из ссылок, которые открываются в теневом блоке, они перенаправляются на страницу входа в ВХОДА В SHADOWBOX, чего я не хочу. Я пытался придумать лучший способ справиться с этим - один из способов, который я думал, который кажется немного неуклюжим tbh, был на странице входа, чтобы проверить, если мы находимся в тени, и если мы тогда закрываем его и перенаправить родительское окно на страницу входа.Проверьте, находится ли текущая страница внутри тени? (так что я могу закрыть shadowbox и снова открыть эту страницу в главном окне)

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

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

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

благодарен за любой совет - максимальная

ответ

0

Использование isOpen().

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

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

+0

Спасибо Kalyan, но это работает только в родительском окне. Он * не работает *, когда вы вызываете его на странице, загружаемой внутри тени. –

+0

Попробуйте обновленный ответ. –

+0

спасибо. это то же самое, что и «window.parent.location», как в моем коде выше? –

0

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

вар Shadowbox = window.parent.Shadowbox;

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

1

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

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

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

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

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

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