2009-05-27 2 views
2

Есть ли способ определить, когда страница была загружена в модальный диалог? Например, когда вы вызываете window.showModalDialog().Обнаружение модальных диалогов в javascript

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

Любые идеи.?

ответ

6

Для окна window.open вы можете проверить, имеет ли страница, на которой вы сейчас находитесь, родителя.

function parentExists(){ 
    return (window.opener != null)? true : false; 
} 

Назовите это, когда загрузится страница входа в систему. Если он возвращает true, вы находитесь в всплывающем окне (или модальном). Затем вы можете закрыть страницу и перенаправить родителя.

Это немного более сложно для модальной коробки, потому что у вас нет доступа к открывателю. Во-первых, убедитесь, что все модальные окна открываются примерно так:

window.showModalDialog('test.htm', self, <optional options>); 

Это позволит убедиться, что-то передается в заданы параметры окна.

Теперь добавьте следующий код на странице входа в систему:

function parentExists() 
{ 
    var opener = window.dialogArguments; 
    return (opener == null)?false:true; 
} 

Edit: добавлена ​​информация о модальных коробками

+0

сообщений, очевидно, остаться здесь по причине, так что вот мои 2cents ... я также пытающийся определить, была ли загружена страница в качестве модального диалога (что похоже на то, что показано здесь: http://help.dottoro.com/ljdlgxbu.php) , но я не мог имитировать эту функциональность, поэтому также попытался проверьте, является ли window.opener нулевым, хотя это работает, оно также вернет true, если ссылка нажата, направляя ее на ваш дочерняя страница. Поэтому для меня это не решает проблему. Конец 2cents. –

Смежные вопросы