4. Объекты навигатора.
При загрузке HTML страницы навигатором (браузером) создается ряд объектов, соответствующих данной странице. Каждая страница всегда содержит обязательные объекты:
- window: объект высшего уровня, содержащий свойства, применимые к
полному окну. Имеются также объекты типа window для подчиненных окон
(child-window) в frame документах,
- location: содержит
свойства текущего URL,
- history: содержит свойства, представляющие
список уже использованных URL,
- document: содержит свойства текущего
документа, такие как title, background color и forms.
Свойства объекта типа document в полном смысле зависят от содержимого HTML страницы (content-dependent). Например, объект document может содержать свойства для каждой из конструк-ций form и anchor в документе.
Пример. Предположим, что имеется страница с именем simple.html, содержащая следующие HTML элементы:
<TITLE>A Simple Document</TITLE>
<BODY>
<FORM
NAME="myform" ACTION="FormProc()" METHOD="get" >
Enter a value:
<INPUT TYPE=text NAME="text1" VALUE="blahblah" SIZE=20 >
Check if you
want:
<INPUT TYPE="checkbox" NAME="Check1" CHECKED
onClick="update(this.form)"> Option #1
<P>
<INPUT
TYPE="button" NAME="Button1" VALUE="Press Me"
onClick="update(this.form)">
</FORM>
</BODY>
Как и положено для страницы, будут определены
window, location, history и document объекты, как внешние ее
атрибуты.
Свойствами этих объектов будут:
- location.href =
"http://www.terrapin.com/samples/vsimple.html",
-
document.title = "A Simple Document",
-
document.fgColor = #000000,
- document.bgColor =
#ffffff,
- history.length = 7.
В примере представлены значения (value) этих свойств.
На основе содержимого страницы браузер также сформирует следующие объекты:
- document.myform,
-
document.myform.Check1,
-
document.myform.Button1.
Этим объектам соответствуют свойства:
- document.myform.action =
http://terrapin/formproc(),
- document.myform.method
= get,
- document.myform.length =
3,
- document.myform.Button1.value = Press
Me,
- document.myform.Button1.name =
Button1,
- document.myform.text1.value =
blahblah,
- document.myform.text1.name =
text1,
- document.myform.Check1.defaultChecked =
true,
- document.myform.Check1.value =
on,
- document.myform.Check1.name = Check1.
Заметим, что каждое из свойств начинается с префикса "document" с последующим именем формы "myform" и затем именем свойства (для свойств form) или именем элемента form. Последовательности в именах свойств имеют иерархический характер, который будет обсуждаться в следующем разделе.
4.1. Иерархия в объектах навигатора.
Объекты в навигаторе образуют своего рода подчиненную последовательность, которая отражает собственно иерархическую структуру HTML страницы. В этой иерархии объект-"потомок" является свойством данного объекта. Например, конструкция form с именем form1 является объектом, но в свою очередь является свойством объекта document и допускает обращение как "document.form1".
Иерархия объектов навигатора может быть проиллюстрирована схемой:
navigator
window
|
+--parent, frames, self,
top
|
+--location
|
+--history
|
+--document
|
+--forms
|
|
| elements (text fields,
textarea, checkbox, password
|
radio, select, button, submit, reset)
+--links
|
+--anchors
Обращение к выбранному свойству этих объектов должно включать имя объекта и всех его "предков". Исключение: не требуется включать название window объекта.
4.2. Соотношение JavaScript и HTML структур.
При загрузке HTML страницы браузер последовательно сверху вниз просматривает ее содержимое в два этапа, сначала заголовок HEAD документа и затем контейнер BODY. При этом различного типа структуры языка HTML отображаются как объекты в JavaScript парадигме. Например, в стра-нице представлена form как одна из структур HTML с элементами полей ввода:
<FORM NAME="statform">
<input type = "text" name = "username"
size = 20>
<input type = "text" name = "userage" size = 3>
Эти form элементы соответствуют JavaScript объектам document.statform.username и document.statform.userage и под этими названиями их можно использовать в странице после объявления этой структуры. Таким образом, можно высвечивать скрипт-операторами значения свойств (value) этих объектов:
<SCRIPT>
document.write(document.statform.username.value)
document.write(document.statform.userage.value)
</SCRIPT>
Однако, попытка сделать это в тексте страницы до декларации form структуры приведет к ошибке, так как к этому моменту в навигаторе еще не существуют соответствующие объекты.
Необходимо заметить также, как только установлено соответствие структур HTML и JavaScript, попытка измененть значения для большей части свойств объектов навигатора не будет выполнена. Например, имется документ с заголовком:
<TITLE>My JavaScript Page</TITLE>
Это соответствует заданию в JavaScript значения для свойства document.title. Как только браузер выдаст на экран (если установлен режим title bar) его уже нельзя будет изменить, например, опрератором JavaScript:
document.title = "The New Improved JavaScript Page"
При этом даже не будет выдаваться диагностика об ошибке.
4.3. Ключевые объекты навигатора.
Ниже будут приведены наиболее употребляемые объекты навигатора - document, form и window.
Объекты типа document
Одним из наиболее полезных объектов навигатора является объект типа document, поскольку с его функциями-методами write and writeln выполняются операции записи в документ страницы и выдачи на экран JavaScript выражений. writeln отличается от write тем, что в конце выдачи прифор-мировывается символ перевода строки carriage return.
К объекту document относятся также обработчики событий onLoad и onUnload для выполнения функций при первичной загрузке страницы и при выходе из нее.
Для текущей страницы создается только один объект типа document и он является "предком" всех form, link и anchor объектов для этой страницы.
Свойства объекта document:
bgColor, fgColor, forms, lastModified,
linkColor, links, location, referrer, title.
Свойства-объекты document:
form, history, link.
Методы document:
clear, close, open, write, writeln.
Примеры:
1. document.write("Last update:" + document.lastModified)
2.
document.fgColor=256*rnd(255)+16*rnd(255)+rnd(255)
3. document.bgColor =
hexNumber2
4. document.writeln("<center><FONT SIZE=4>Good
Morning</FONT></center>")
Объекты типа form.
Браузер создает объекты для каждой из структур form в документе. Можно задавать имя структуры, используя аттрибут NAME, как в примере:
<FORM NAME="myform">
<INPUT TYPE="text" NAME="quantity"
onChange="...">
...
</FORM>
Этим будет создан JavaScript объект с именем myform и свойствами, соответствующими объекту типа text, к которому можно обращаться как:
document.myform.quantity
Можно также обратиться к свойству value объекта как:
document.myform.quantity.value
Структуры типа form записываются браузером в массивы под названием forms. Таким образом, первая (верхняя в странице) из form структур будет forms[0], вторая - forms[1] и так далее.
Допустимы будут и такие обращения:
document.forms[0].quantity
document.forms[0].quantity.value
Подобно этому, элементы form, такие как поля text, radio-кнопки и др. также находятся в эле-ментах массива elements.
Свойства объекта form:
action, length, method, target.
Свойства-объекты form:
button, checkbox,
hidden, password, radio, reset, select, submit, text, textarea.
Методы form: submit.
Объект типа window
Объект типа window является "родительским"
для всех типов объектов в странице.Как правило, имя этого объекта опускается при
обращении к его свойствам и методам.
Объект
window имеет ряд очень полезных методов, используемых для создания
и закрытия окон, а также создания диалоговых боксов.
open и close: открытие и закрытие окон
браузера,
alert: создание диалогового бокса
типа alert (сообщение),
confirm: создание
диалогового бокса типа confirm (сообщение с подтверждением).
Window объект обладает свойствами для frame и frameset структур. Структуры типа frame размещаются в frames массивах. Эти массивы содержат входы для каждого подчиненного frame. Например, если окно содержит три подчиненых "под-окна", в JavaScript это будет соответствовать:
window.frames[0], window.frames[1] и window.frames[2].
Свойство status объекта window дает возможность выдавать сообщения в статусную строку на экране окна навигатора.
Свойства объекта window:
defaultStatus, length, status.
Свойства-объекты window:
document, frame, location.
Методы window:
alert, close, confirm, open, prompt, setTimeout,
clearTimeout.
Обработчики событий: onLoad, onUnload.
Примеры:
1. function hello() {
alert("Hello! Did I make you Jump") }
2. if(confirm("Are you sure you want to
go to the previous page?"))
{
history.back()}
3. tid
= setTimeout("time()",100)
4. clearTimeout(tid)
5. function setstatus()
{
window.defaultStatus="JavaScript Page"; }
6. function
unestatus(){
window.defaultStatus=""; }
7. window.status="Cool, isn't it?"