Введение в JavaScript

advertisement
Введение в JavaScript
Общие сведения
Web, как гипертекстовую систему, можно
рассматривать с двух точек зрения.
 Во-первых, как совокупность отображаемых
страниц, связанных гипертекстовыми
переходами (ссылками — контейнер ANCHOR).
 Во-вторых, как множество элементарных
информационных объектов, составляющих
отображаемые страницы (текст, графика,
мобильный код и т.п.).
Основная идея JavaScript состоит в возможности
изменения значений атрибутов HTMLконтейнеров и свойств среды отображения в
процессе просмотра HTML-страницы
пользователем. При этом перезагрузки
страницы не происходит.
Понятие объектной модели
Для создания механизма управления
страницами на клиентской стороне
было предложено использовать
объектную модель документа. Суть
модели в том, что каждый HTMLконтейнер — это объект, который
характеризуется тройкой:
 свойства;
 методы;
 события.
Свойства


Многие HTML-контейнеры имеют атрибуты.
Например, контейнер якоря <A ...>...</A>
имеет атрибут HREF, который превращает его в
гипертекстовую ссылку:
<A HREF=intuit.htm>intuit</A>
Если рассматривать контейнер якоря <A
...>...</A> как объект, то атрибут HREF будет
задавать свойство объекта "якорь".
Программист может изменить значение
атрибута и, следовательно, свойство объекта:
document.links[0].href="intuit.htm";
Свойства
Свойствами в JavaScript наделены
объекты, которые не имеют
аналогов в HTML-разметке.
Например, среда исполнения,
называемая объектом Navigator,
или окно браузера Window,
которое является вообще самым
старшим объектом JavaScript.
Пример переопределения свойств
j1.html
<BR>
<A HREF=j1_1.html>загрузка файла</A>
<SCRIPT language="JavaScript">
document.links[0].href="j1_2.html";
</SCRIPT>
<BR>
<A HREF=j1_1.html>загрузка файла</A>

Методы
В терминологии JavaScript методы
объекта определяют функции
изменения его свойств. Например,
с объектом "документ” (document)
связаны методы open(), write(),
close(). Эти методы позволяют
сгенерировать или изменить
содержание документа.
Пример использования методов
j2.html
function hello()
{
id1=window.open("","example1","width=400,heig
ht=150");
id1.focus(); id.document.open();
id1.document.write("<H1>Привет от
функции!</H1>");
id1.document.write("<HR><FORM name=f1>");

id1.document.write("<INPUT TYPE=button
VALUE='Закрыть окно' ");
id1.document.write("onClick='window.opener.focus()
;window.close();'>"); id1.document.close();
}
События
Собственно, суть программирования на JavaScript
заключается в написании обработчиков этих
событий. Например, с объектом типа Button
(контейнер INPUT типа button — "Кнопка")
может происходить событие click, т.е.
пользователь может нажать на кнопку. Для
этого атрибуты контейнера INPUT расширены
атрибутом обработки события click — onClick. В
качестве значения этого атрибута указывается
программа обработки события, которую должен
написать на JavaScript автор HTML-документа.
Пример обработчика события
j3.html
<INPUT TYPE=button
VALUE="Нажать"
onClick="window.alert('Нажата
кнопка!');">

Размещение кода на HTML-странице
Исполняет JavaScript-код браузер. В него встроен
интерпретатор JavaScript. Следовательно,
выполнение программы зависит от того, когда и
как этот интерпретатор получает управление. В
общем случае можно выделить четыре способа
функционального применения JavaScript:
 гипертекстовая ссылка (схема URL);
 обработчик события (handler);
 подстановка (entity) (в Microsoft Internet
Explorer реализована в версиях от 5.X и выше);
 вставка (контейнер SCRIPT).
Пример размещения кода

j4.html
URL-схема
Для того чтобы отличить стандартный переход по
протоколу HTTP от перехода,
программируемого на JavaScript, разработчики
языка ввели новую схему URL —javascript:
<A HREF="javascript:JavaScript_код">...</A>
<IMG SRC="javascript:JavaScript_код>
Например:
<A
HREF="javascript:alert('Внимание!!!');">Вниман
ие!!!</A>
<FORM NAME=f
ACTION="javascript:alert('Внимание!!!');">
Обработчики событий
<FORM><INPUT TYPE=button
VALUE="Кнопка"
onClick="window.alert('intuit');">
</FORM>
или
<INPUT TYPE=submit
VALUE="Нажми«
ONCLICK="document.f.i.value=
'текст в текстовое поле'">
Подстановки
<FORM><INPUT
VALUE="&{window.location.href};"
></FORM>
В поле выводится URL текущей
страницы
Вставка
Используется контейнер SCRIPTпринудительный вызов интерпретатора.
<FORM NAME=f
ACTION="javascript:alert('Внимание!!!');
">
<INPUT NAME=i>
…
<SCRIPT>
document.f.i.value='text';
</SCRIPT>
Вставка
<body>
<SCRIPT>
d = new Date();
document.write("<BR>");
document.write("Момент загрузки
страницы:
"+d.getHours()+":"+d.getMinutes()+":"+
d.getSeconds());
document.write("<BR>");
</SCRIPT>
</body>
Иерархия классов
Класс объектов Window-окно
браузера
Поле статуса –свойство status

j5.html
<HTML><HEAD><TITLE></TITLE>
<script language="JavaScript">
function statbar(txt)
{
window.status=txt;
}
</script>
</HEAD><BODY>
<BODY onLoad="window.defaultStatus='Status bar
programming';">
<form>Размещение кода внутри HTML-документа
<BR>Пример записи и стирания в строке статуса
<input type=button name=look value="Пишем"
onclick="statbar('Текст в панели состояния');">
<input type=button name=erase value="Стираем"
onclick="statbar('');">
</form></BODY></HTML>
Поле location
свойства объекта Location
<SCRIPT>
document.write("
href="+window.location.href+"<br>");
document.write("
proocol="+window.location.protocol+"<br>");
document.write("
hostname="+window.location.hostname+"<br>");
document.write("
host="+window.location.host+"<br>");
document.write("
port="+window.location.port+"<br>");
document.write("
pathname="+window.location.pathname+"<br>");
<SCRIPT>
Поле location
Методы Location


Методы Location предназначены для
управления загрузкой и перезагрузкой
страницы. Это управление заключается
в том, что можно либо перезагрузить
документ (reload), либо загрузить
(replace). При этом в трассу просмотра
страниц (history) информация не
заносится:
window.location.reload(true);
window.location.replace('#top');
Метод reload()

Метод reload() полностью моделирует
поведение браузера при нажатии на кнопку
Reload в панели инструментов. Если вызывать
метод без аргумента или указать его равным
true, то браузер проверит время последней
модификации документа и загрузит его либо из
кеша (если документ не был модифицирован),
либо с сервера. Такое поведение соответствует
простому нажатию на кнопку Reload. Если в
качестве аргумента указать false, то браузер
перезагрузит текущий документ с сервера,
несмотря ни на что. Такое поведение
соответствует одновременному нажатию на
Reload и кнопку клавиатуры Shift
(Reload+Shift).
Метод replace()

Метод replace() позволяет заменить
одну страницу другой таким образом,
что это замещение не будет отражено в
трассе просмотра HTML-страниц
(history), и при нажатии на кнопку Back
из панели инструментов пользователь
всегда будет попадать на первую
загруженную обычным способом (по
гипертекстовой ссылке) страницу.
Напомним, что при изменении свойств
Location также происходит перезагрузка
страниц, но в этом случае записи об их
посещении в history попадают.
История посещений (History)
<FORM><INPUT TYPE=button
VALUE="Назад"
onClick=history.back()></FORM>
Объект Navigator – тип браузера
</SCRIPT>
document.write(navigator.appNamev+"<br>");
document.write(navigator.appCodeName+"<br>");
document.write(navigator.appVersion+"<br>");
document.write(navigator.userAgent+"<br>");
</SCRIPT>
Методы Window
Простые и наиболее популярные методы
управления окнами:
 alert();
 confirm();
 prompt();
 open();
 close();
 focus();
 setTimeout();
 clearTimeout().
Управление окнами

j8.html
Метод alert()
<A
HREF="javascript:window.alert('Вни
мание')">Повторите запрос!</A>
Метод confirm()
<INPUT TYPE=button VALUE="Что вы
знаете о JavaScript?"
onClick="
if(window.confirm('Знаю все')==true)
{ document.forms[1].elements[1].value=
'Да'; }
else
{ document.forms[1].elements[1].value=
'Нет'; };"><BR>
Метод prompt()
document.forms[1].elements[1].value
=window.prompt('Введите
сообщение');
Метод open()
Метод предназначен для создания новых
окон. В общем случае его синтаксис
выглядит следующим образом:
open("URL","window_name","param,param,
...",replace);
где: URL — страница, которая будет
загружена в новое окно,
window_name — имя окна, которое
можно использовать в атрибуте TARGET
в контейнерах A и FORM.
Параметры метода open()
Простое окно
<INPUT TYPE=button
VALUE="Простое окно" onClick=
"window.open('about:blank','test1',
'directories=no,
height=200,
location=no,
menubar=no,resizable=no,
scrollbars=no, status=no,
toolbar=no,width=200');">
Параметры «простого окна»
Пример «простого окна»
Сложное окно
<INPUT TYPE=button VALUE="Сложное окно"
onClick="window.open('about:blank','test2',
'directories=yes,
height=200,
location=yes,
menubar=yes,
resizable=yes, scrollbars=yes, status=yes,
toolbar=yes,
width=200');">
Параметры «сложного окна»
Пример «сложного окна»
Метод close()
Метод close() — позволяет закрыть окно. Чаще
всего возникает вопрос, какое из окон следует
закрыть. Если необходимо закрыть текущее, то:
window.close();
Если необходимо закрыть родительское окно, т.е.
окно, из которого было открыто текущее, то:
window.opener.close();
Если необходимо закрыть произвольное окно, то
тогда сначала нужно получить его
идентификатор:
id=window.open();
...
id.close();
Выбор каскадных таблиц стилей
<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT language="JavaScript">
{function hello(a)
if (a=='1')
a='s5.css';
if (a=='2')
a='s3.css';
id1=window.open('','test2','directories=yes,
height=200,location=yes,menubar=yes,resizable=yes,
scrollbars=yes, status=yes,toolbar=yes,width=600?
height=600');
id1.document.write("<HTML>");
id1.document.write("<HEAD>");
id1.document.write("<TITLE></TITLE>");
id1.document.write("<LINK TYPE='text/css'
REL='stylesheet' HREF='"+a+"'>");
id1.document.write("</HEAD>");
id1.document.write("<BODY>");
id1.document.write("<P> Пример
параграфа</P>");
id1.document.write("<BR>");
id1.document.write("<H1>Пример заголовка
первого уровня</H1>");
id1.document.write("<center>");
id1.document.write("<table border=1>");
id1.document.write("<tr><th>text1</th><th>text2</th></tr>
");
id1.document.write("<tr><td>1</td><td>2</td></tr>");
id1.document.write("<tr><td>1</td><td>2</td></tr>");
id1.document.write("<tr><td>1</td><td>2</td></tr>");
id1.document.write("</table>");
id1.document.write("</center>");
id1.document.write("</BODY>");
id1.document.write("</HTML>");
}
</SCRIPT>
</HEAD>
<BODY>
Этот пример демонстрирует выбор каскадных
таблиц стилей
<BR>
<FORM name=f0>
<INPUT TYPE=TEXT name=tx value='1'>
<INPUT TYPE=submit VALUE="Нажми!"
ONCLICK=hello(tx.value)>
</FORM>
</BODY>
</HML>
Download