Обнаружение модальных диалогов в javascript - PullRequest
2 голосов
/ 27 мая 2009

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

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

Есть идеи?

1 Ответ

6 голосов
/ 28 мая 2009

Для 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;
}

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

...