Модальные окна> Собственно, как это можно сделать? Есть такая хорошая штука как 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 |