Как закрыть диалог, открытый showModalDialog?

Я попробовал это, но не получилось:

var win = showModalDialog('http://localhost/index.php');
win.close();

4 ответа

Определение модального окна состоит в том, что выполнение текущей функции останавливается, пока модальное окно не будет закрыто. То есть призыв к showModalDialog() будет блокироваться, пока показанное диалоговое окно не будет закрыто. Поэтому ваш win.close() будет вызван после того, как окно уже закрыто (не то, что вы собираетесь).

У вас есть пара вариантов:

  • Показать диалог как немодальный и подождать в цикле событий, пока не будет выполнено определенное условие. Затем закройте окно от вызывающей функции.

  • Модальное диалоговое окно закрывается в соответствующее время.

Когда вы выполняете showModalDialog, вся последовательность кода заблокирована. Вам нужно закрыть модальное окно, чтобы продолжить, однако win будет null к тому времени:P

Если вы хотите закрыть его из модального диалога, вы можете использовать:

$ (". ui-dialog-titlebar-close", parent.document).trigger ("клик");

Модальный диалог означает, что следующий оператор не выполняется, пока диалог не будет закрыт. Вот почему ничто из того, что вы поместите в следующую строку, никогда не сработает.

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

Кстати, возвращаемое значение showModalDialog - это код возврата диалога, а не переменная окна!

Обычно модальные диалоги закрыты изнутри. Если вы не хотите ждать ввода пользователя, в коде index.php должно быть что-то, что закрывает его.

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