Java

         

Раз окно, два окно…


Теперь попробуем сделать собственное окно с приветствием. Размер и содержимое придумаем сами. Передвинем сообщение немного вниз - на 50 пикселей (topMargin=50) - и «отцентрируем». Для этого напишем следующий код:

<BODY text="#000000" bgcolor="#7FFFD4" topmargin=50 marginwidth=10 marginheight=0>
<A name="_top"></A>
<CENTER>
<SCRIPT language="JavaScript">
<!--
function OpenWin() {
myWin1=window.open("", "top_", "width=500, height=400, status=no, toolbar=no, resizable=yes, scrollbars=yes, menubar=yes");
document.ss.submit();
}
// -->
</SCRIPT>
<BR>
<FORM name="ss" method=post action="programr.htm" target="top_">
<INPUT type="hidden" name="doc_number" value="" ></input>
</FORM>
<PRE class="left">
<FONT size=3>
С Днем рождения, <A href="javascript:OpenWin()"><U><B>программер!</B></U></A>
</FONT>
</PRE>
</BODY>

При загрузке странички появится уже знакомое нам приветствие. Выделение слова «программер» намекает посетителю на то, что, если по нему щелкнуть, откроется второе окно. Например, с пояснением для новичков, что оно означает… О назначении функции OpenWin(), надеюсь, вы и сами догадались. Правильно, она использует стандартную функцию window.open() для создания и открытия окна шириной 500 и высотой 400 пикселей. Для удобства и «сжатия» этого окна мы отключили отображение нижней строки состояния, где обычно выводятся сообщения о загрузке страницы, а также окно с навигационными кнопками. Подробнее о параметрах страницы речь пойдет позже.

Если щелкнуть на слове «программер», откроется файл programr.htm. Его HTML-код может быть, например, таким: <HTML> <HEAD> <TITLE> Словарик </TITLE> </HEAD> <BODY text="#000000" bgcolor="#FFFFFF"> <P> <U><B>Программер</B></U> (жарг.) - программист. </BODY> </HTML>


Правда, здесь есть один недостаток. Для того чтобы закрыть «словарь», необходимо зайти в меню и выбрать команду Файл * Закрыть. Согласитесь, это довольно неудобно. Можно ли автоматизировать этот процесс? Конечно. Для этого нужно создать, например, радиокнопку, которая будет вызывать соответствующую функцию (которая называется window.close()):

<BODY text="#000000" bgcolor="#FFFFFF">
<P> <U><B>Программер</B></U> (жарг.) - программист.
<CENTER><FORM>
<INPUT type="button" value="Закрыть" onClick="window.close()">
</FORM></CENTER>
<NOSCRIPT>
<I>Используйте кнопку "Возврат"/"BACK" вашего браузера для возврата на предыдущую страницу.</I>
</NOSCRIPT><BR clear="all">
</BODY>

Вместо функции window.close() можно использовать self.close().Обе отлично справляются со своими обязанностями и в Internet Explorer, и в Opera. Кстати, для Opera можно написать просто close().

Конечно, для удобства нашу программу желательно дополнить еще небольшим фрагментом, с помощью которого можно было бы спросить юзера, желает ли он закрыть окно или нет? Для этого достаточно внести в код такие косметические изменения:

<HTML>
<HEAD>
<TITLE> Словарик с кнопкой закрытия окна. Вариант с запросом. </TITLE>
<SCRIPT language="JavaScript">
<!--
function OnExit() {
if (confirm ("Вы действительно хотите закрыть это окошко?"))
top.close();
}
//-->
</SCRIPT>
</HEAD>
<BODY text="#000000" bgcolor="#FFFFFF">
<P> <U><B>Программер</B></U> (жарг.) — программист.
<CENTER><FORM>
<INPUT type="button" value="Закрыть" onClick="OnExit()">
</FORM></CENTER>
<NOSCRIPT>
<I>Используйте кнопку "Возврат"/"BACK" вашего браузера для возврата на предыдущую страницу.</I>
</NOSCRIPT><BR clear="all">
</HEAD>
</BODY>
</HTML>

Для обработки запроса здесь используется стандартная функция confirm(). За вызов функции-обработчика запроса OnExit() отвечает оператор onClick.

А можно ли организовать навигацию по веб-страницам - например, возврат на предыдущую страницу - без использования стандартных кнопок браузера? Конечно. Для этого достаточно «повесить» на каждую страничку соответствующую кнопку перехода:

<CENTER><FORM>
<INPUT type="button" value="Возврат" onClick="history.go(-1)">
</FORM></CENTER>
<NOSCRIPT>
<I>Используйте кнопку "Возврат"/"BACK" вашего браузера для возврата на предыдущую страницу.</I>
</NOSCRIPT><BR clear="all">

Вместо оператора history.go(-1) можно использовать history.back(1). Результат будет одинаковым и в IE, и в Opera.

Теперь, похоже, все в порядке. Кстати, что означает текст между тегами <NOSCRIPT> и </NOSCRIPT>? Дело в том, что некоторые браузеры не поддерживают JavaScript и, следовательно, могут не отобразить нашу кнопку. И это относится не к какой-то экзотике, а к обычным браузерам. Например, если отключить выполнение JavaScript, указанная строка не будет видна в старой версии 3.x и в новой 5.x Internet Explorer. В таком случае нужно дать пользователю «руководство к действию».

При создании окна используется несколько параметров. Давайте разберемся, для чего они предназначены. Для активации параметра достаточно присвоить ему значение. Описания некоторых параметров, использованных в нашем примере, представлены в таблице 2. Таблица 2.
Параметр Значение Описание
width 500 ширина окна в пикселях
height 400 высота окна в пикселях
status no не показывать строку состояния, в которой отображаются сообщения о загрузке страницы
toolbar no отключить панель навигационных кнопок. Этот режим работает в IE5 и Navigator 6.2, но не в Opera, так как в этом браузере открывается новое окно, а не копия старого (как в IE)
menubar 0 не отображать строку меню. Как и предыдущий параметр, работает в IE и Navigator (так как открывается еще одна копия браузера), однако в Opera (3 и 5) эффекта не дает
scrollbars yes отображать полосы прокрутки
resizable yes разрешение изменять размер окна. В Opera эффекта не дает
location yes показывать URL, по которому обращается браузер (в т. ч. локальные имена файлов). Имеет смысл использовать в IE и Opera версии не ниже 5, но не в Opera 3 (там адресная строка всегда доступна)
directories yes отображать в строке адреса меню ссылок (только для Internet Explorer и Navigator)
<

Содержание раздела