Логин:

Пароль:

Форумы
Общие вопросы
Document Object Model
Обсуждаем конференцию
Web Usability (test)

Общие вопросы

Модальные окна

> Собственно, как это можно сделать? Есть такая хорошая штука как window.ShowModalDialog, но работает она, насколько я понимаю, только в IE. Мне же еще обязательно нужна совместимость с Mozill-ой.

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

Нужно было, чтоб окно всегда находилось поверх основного, и контент в основном окне был не доступен.
Я сделал DIV с прозрачным гифом в бэкграунде, который накладывал поверх всего контента, и для пущего эффекта присваивал body disabled.

Вот как это выглядит:

function openWindow() {

.var dUrl = "..."
.var wWidth = 350; var wHeight = 300;
.
.// Новое окно всегда должно открываться по середине opener
.var wLeft = screenLeft + ((document.body.clientWidth / 2) - (wWidth / 2));
.var wTop = .screenTop + ((document.body.clientHeight / 2) - (wHeight / 2));
.
.var wFeatures = "width=" + wWidth + ", height=" + wHeight + ", top=" + wTop + ", left=" + wLeft;

.var oNewWindow = open(dUrl, "_blank", wFeatures, false);

.oContentDeactivate.style.display = 'block';
.document.body.setAttribute("disabled", true);
.
.window.onfocus = function() {
..if (oNewWindow.closed) {
...oContentDeactivate.style.display = 'none';
...document.body.setAttribute("disabled", false);
...window.onfocus = null;
..}
..else
...oNewWindow.focus();
.}
}

А это DIV с прозрачным гифом:
<div id="oContentDeactivate" style="background-image:url('/dt.gif'); width:100%; height:100%; position:absolute; z-index:9; display:none"></div>

Если очень постараться - можно выхватить opener из под открывшегося окна, но контент все равно будет не доступен.
Все это я писал только под IE, по-этому для мазиллы нужно подправить.

> Кроме того мне что-то не удалось заюзать этот метод через JS (хотя через VBS отлично работает), а хотелось бы все-таки в JS.

vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])

Подробнее смотри MSDN Library
СообщениеАвторДата
Reaper07.08.2002 17:14
Gilmour08.08.2002 02:26
Сфйгэ08.08.2002 11:30
Gilmour08.08.2002 14:51
уЖКЗЬ09.08.2002 09:42
Gilmour11.08.2002 02:52
Leechy07.08.2002 18:48
Maniac07.08.2002 18:03
Reaper07.08.2002 21:58
HiArt08.08.2002 00:41