Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > создание нового окна


Автор: anti_snayper 12.10.2007, 23:23
http://forum.vingrad.ru/topic-44559.html
в разделе ОБМЕН ИНФОРМАЦИИ С РОДИЛЬНЫМ ОКНОМ
приведен следующий пример:
Код

Пример использования "приветствия от юзера" с помощью модального окна:Разметка HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Привествие</title>
<script type="text/javascript">
function openDialog(form) {
    var result = window.showModalDialog("hello.html", form, "dialogWidth:300px; dialogHeight:201px; center:yes");
}
</script>
</head>
<body>

<form name="sample" action="#" onsubmit="return false">
Имя: <input name="yourName" type="text" />
<input type="button" value="Послать" onclick="openDialog(this.form)" />
</form>
</body>
</html>


и

hello.htmlРазметка HTML
Код

<html>
<head>
<title>Приветствие в МОДАЛЬНОМ ОКНЕ (IE only)</title>
</head>
<body>
<script type="text/javascript">
document.write("Вам привет от " + window.dialogArguments.yourName.value + "!");
</script>
</body>
</html>


Но этот код работает только в IE. Можно ли кго как-нибудь модифицировать и для работы в opera, mozilla?

Автор: Castro 13.10.2007, 15:20
Функция showModalDialog работает только в ИЕ. Для остальных браузеров нужно использовать window.open() с теми же параметрами что и в Вашем примере, а с hello.html обращаться  к открывающему окну через window.opener.
Что-то типа примера здесь http://www.webreference.com/js/tutorial1/opener.html

Автор: Astraller 13.10.2007, 15:36
Castro, криво это, еще раз говорю, для таких "рюшечек" открывать еще одно окно. Используйте "плавающий" div. smile 

Автор: Castro 13.10.2007, 15:41
Цитата(Astraller @ 13.10.2007,  15:36)
Castro, криво это, еще раз говорю, для таких "рюшечек" открывать еще одно окно. Используйте "плавающий" div. smile

А примерчик обращения к дочернему окну через плавающий  div можно?

Автор: anti_snayper 13.10.2007, 15:50
Плавающий div, конечно предпочтительнее.
Но у меня задача стоит так: вывести окно с сообщением определенного размера в центре экрана, которое через определенный провежуток времени само закрывалось бы.
Как с окном все это сделать я примерно знаю.
Как с div - без понятия. 

Автор: Astraller 13.10.2007, 16:03
Хм... в чем проблема с div?
Создать?
Код

mydiv=document.createElement("div");
document.body.appendChile(mydiv);

Расположить посередине?
Код

cHeight=document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
cWidth=document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
mydiv.style.width="100px";
mydiv.style.height="100px";
mydiv.style.left=Math.round((cWidth-100)/2);
mydiv.style.top=Math.round((cHeight-100)/2);

Обратиться к содержимому?
Код

mydiv.innerHTML="Я Дивко!";

Скрыть его через время?
Код

setTimeout("hide();",1000);
function hide(){
mydiv.style.display="none";
}

Если в коде ошибки не пинать - писал "на коленке".

Добавлено через 1 минуту и 21 секунду
Castro, зачем нам окно если у нас есть div smile

Автор: cruelangel 13.10.2007, 17:52
> Но у меня задача стоит так: вывести окно с сообщением определенного размера в центре экрана, которое через определенный провежуток времени само закрывалось бы.

с какой целью? если стоит задача уведомить о чём-то пользователя, то лучше использовать менее навязчивые средства.

Автор: anti_snayper 13.10.2007, 19:18
Цитата

Хм... в чем проблема с div?

проблема в том что я пока не знаю яву

Цитата

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

какие?

Автор: cruelangel 13.10.2007, 20:15
ну, например, всплывающие панельки типа как при блокировке всплывающих окон или при окончании всех загрузок в ФФ.

Автор: anti_snayper 13.10.2007, 20:44
Цитата

ну, например, всплывающие панельки типа как при блокировке всплывающих окон или при окончании всех загрузок в ФФ.

Если сможешь дать код - буду благодарен. Сам я такое точно не сделаю. Яву на данный момент вообще не знаю.

Автор: Astraller 14.10.2007, 09:23
anti_snayper, скажу тебе честно, если ты будешь просто просить рабочий код то, через некоторое время, желание тебе помогать отпадёт у всех.

Возьми учебник по JS начни писать. Будут проблемы - спрашивай. А если всю жизнь пользоваться чужими кодами то и у людей о тебе будет не наилучшее мнение и сам ничему не научишься. smile 

Автор: anti_snayper 14.10.2007, 23:56
Сайт делаю по учебе и сейчас совсем нет времени сидеть, разбираться с явой. Потому и просил привести пример. Появится время - обязательно разберусь. 
Тему можно закрывать - сделал через window.open() 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)