В предыдущей главе мы рассмотрели базовые операторы языка JavaScript. В некоторых примерах я использовал объекты и методы языка. Когда я только начал говорить о языке JS, мною упоминались такие понятия, как Объект их Свойста и Метод. Здесь я приведу более четкую формулировку етих понятий.
При создании HTML-документов и JavaScript-программ необходимо учитывать структуру объектов. Все объекты можно разделить на три группы:
Объектами браузера являются зависимые от браузера объекты: window,
location, history и т.д.
Внутренние объекты включают простые типы данных, такие как строки string,
математические константы math и другие.
Объекты, связанные с тегами HTML, соответствуют тегам,
которые формируют текущий документ. Они включают такие элементы как гиперсвязи и формы.
С объектами связаны методы, которые позволяют управлять этими объектами, а также в некоторых случаях менять их содержимое. Кроме того в языке JS имеется возможность создавать свои методы объектов. При использовании метода объекта, нужно перед именем метода указать имя объекта к которому он принадлежит. Например, правильным обращением к методу document является выражение document.write(), а просто выражение write() приведет к ошибке.
В объектно-ориентированном программировании используется также термин свойство. Свойство - это именованное значение, которое принадлежит объекту. Все стандартные объекты языка JS имеют свойства. Например, в прошлой главе мы использовали в одном из примеров свойство fgColor объекта document, данное свойство соответствует атрибуту text тега <body> - цвет шрифта документа. Для обращения к свойству необходимо указать имена объекта и свойства, разделив их точкой. Каждый объект имеет собственный набор свойств. Набор свойств нового объекта можно задать при определении объекта. Однако, некоторые свойства объктов существуют только для чтения, и Вы не можете их менять. В таких случаях можно получить только значения этих свойств. Как показывает практика, такие свойства изменять обычно без надобности и проблем в связи с этим не возникает.
В этой части я более подробно опишу один из видов объектов - объекты браузера.
Объектами браузера являются зависимые от браузера объекты: окно (window), местоположение (location), история (history) и документ (document). Данные объекты являются объектами верхнего уровня в клиентской иерархии JavaScript. Причем, я их перечислил в порядке убывания, т.е. window - самый главный объект, location - находится на одну ступеньку ниже и т.д.... Упс..забыл еще один - навигатор (navigator) - содержит информацию о версии Вашего браузера. Объекты верхнего уровня создаются автоматически при загрузке страницы. Разберем их методы и свойства подробно.
Имя объекта | Описание |
window | Объект верхнего уровня в иерархии объектов языка JavaScript. Фреймосодержащий документ также имеет объект window. |
document | Содержит свойства, которые относятся к текущему HTML-документу, например имя каждой формы, цвета, используемые для отображения документа, и др. В языке JS большинству HTML-тегов соответствуют свойства объекта document. |
location | Содержит свойства, описывающие местонахождение текущего документа. |
navigator | Содержит информацию о версии браузера. Свойства данного объекта обычно только для чтения. |
history | Содержит информацию обо всех ресурсах, к которым пользователь обращался во время текущего сеанса работы с браузером. |
Объект верхнего уровня для групп объектов document, location и history.
Объект window соответсвует главному окну браузера. Но следует иметь в виду, что если документ имеет фреймы, то это
утверждение не всегда является правильным, так как фреймы тоже своего рода - окна.
Поэтому для обращения к конкретному окну следует использовать свойство frames объекта parent.
Фреймы - это те же окна. Чтобы обратиться к ним в языке JS, можно использовать
массив frames. Например, выражение parent.frames[0] обращается к
первому фрейму окна браузера. Предполагается, что такое окно существует, но при
помощи метода window.open() можно открывать и другие окна и обращаться к
ним посредством свойств объекта window.
Для обращенния к методам и свойствам объекта window
используют следующие варианты записи:
Здесь windowVar - экземпляр объекта window. Имя self - синоним, используемый для обращения к текущему окну во фреймосодержащем документе, тогда как имя top применяется для обращения к главному окну браузера. Для этой цели можно применить и объект parent. Однако следует иметь в виду, что значением parent является ссылка на родительское окно, когда top - ссылка на окно верхнего уровня, которое содержит либо данный фрейм, либо фрейм содержащий вложенный фрейм. Обращение напрямую к методам и свойствам возможно при использовании оператора with.
Объект window имеет свойства:
Метод alert() применяется для того, чтобы вывести на экран текстовое сообщение. Для открытия окна используется метод open(), а для закрытия - метод close(). С помощью метода confirm() происходит вывод на экран окна сообщения с кнопками Yes и No, и возвращает булевое значение true или false, в зависимости от нажатой кнопки. Посредством метода prompt() на экран выводится диалоговое окно с полем ввода. Метод setTimeout() устанавливает в текущем окне обработку событий, связанных с таймером, а метод clearTimeout() отменяет обработку таких событий.
Объект window не обрабатывает события до тех пор, пока в окно не загружен документ. Однако можно обрабатывать события, связанные с загрузкой и выгрузкой документов. Обработчики таких событий задаются как значения атрибутов onLoad и onUnload, определяемых в теге <body>. Эти же атрибуты могут быть определены в тегах <frameset> фреймосодержащих документов.
На верхОбъект document соответствует всему гипертекстовому документ, вернее,
той его части, которая заключена в контейнер <body> . . .
</body>. Документы отображаются в окнах браузера, поэтому каждый
из них связан с определенным окном. Все HTML-объекты являются свойствами
объекта document, поэтому они находятся в самом документе. Например, в
языке JS к первой форме документа можно обратиться, используя выражение:
document.forms[0]
в то время как к первой форме во втором фрейме следует обращаться выражением:
parent.frames[1].document.forms[0]
Объект document удобно использовать для динамического
создания HTML-документов. Для этого применяется HTML-контейнер <body>
. . . </body>. Хотя в этом контейнере можно установить множество
различных свойств документа, всеже имеются такие свойства, значения которых
нельзя установить с помощбю этих тегов. Синтаксис тега я не буду приводить, -
его можно найти в спецификации HTML. Мы же, будем считать, что синтаксис HTML
знаем. Ну а если для вас имеются затруднения, можете найти полное описание
языка HTML на множестве других страниц в Интернете. Перейдем же к свойствам и
методам объекта document.
Для обращения к свойствам и методам объекта document
применяется следующий синтаксис:
document.propertyName
document.methodName (parameters)
Объект document имеет достаточно много свойств, каждое из которых соответствует определенному HTML-тегу в текущем документе:
Метод clear() предназначен для очистки текущего документа. Лучше использовать для очистки методы open() и close(). Для записи информации в браузер применяют методы write() и writeln(). Покольку эти методы записывают текст в браузер в HTML-формате, вы можете создавать любой HTML-документ динамически, включая готовые приложения на языке JavaScript. Если в окно загружен документ, то запись данных поверх него может привести к сбою. Поэтому в окно следует записывать поток данных, для чего с помощью метода document.open() нужно открыть документ, а затем, вызвав необходимое количество раз метод document.wtite(), записать данные в документ. В заключение, чтобы послать данные в браузер, следует вызвать метод document.close().
В тегах <body> и <frame> можно использовать обработчики событий, связанных загрузкой и выгрузкой документа, onLoad и onUnload. Примеры использования событий будем разбирать позже.
На верхДанный объект сохраняет местоположение текущего документа в виде адреса URL
этого документа. При управлении объектом location существует возможность
изменять адрес URL документа. Объект location связан с текущим объектом window
- окном, в которое загружен документ. Документы не содержат информации об
адресах URL. Эти адреса являются свойством объектов window.
Синтаксис:
[windowVar.]location.prepertyName
где windowVar - необязательная переменная, задающая конкретное окно, к
которому хотите обратиться. Эта переменная также позволяет обращаться к фрейму
во фреймосодержащем документе при помощи свойства parent -
синонима, используемого при обращении к объекту window верхнего
уровня, если окон несколько. Объект location является свойством объекта window.
Если вы обращаетесь к объекту location без указания имени окна, то
подразумевается свойство текущего окна.
Свойство location объекта window легко
перепутать со свойством location объекта document.
Значение свойства document.location изменить нельзя, а значение
свойства location окна - можно, например при помощи выражения window.location.property.
Значение document.location присваивается объекту window.location
при первоначальной загрузке документа, потому, что документы всегда
загружаются в окна.
Объект location имеет следующие свойства:
Для объекта location методы, не определены, также не связан с какими-либо обработчиками событий.
На верхОбъект history содержит список адресов URL, посещенных в этом сеансе. Объект history связан с
текущим документом. Несколько методов этого объекта позволяют загружать в
браузер различные ресурсы и обеспечивают навигацию по посещенным ресурсам.
Синтаксис:
history.propertyName
history.methodName (parameters)
Значением свойства length является количество элементов в списке объекта history.
Метод back() позволяет загружать в браузер предыдущий ресурс, в то время как метод forward() обеспечивает обращение к следующему ресурсу в списке. С помощью метода go() можно обратиться к ресурсу с определенным номером в списке объекта history.
Объект navigator содержит информацию об используемой в настоящее время
версии браузера. Этот объект применяется для получения информации о версиях.
Синтаксис:
navigator.propertyName
Методы и события, как и не трудно догадаться не определены для этого объекта.
Да и свойства только для чтения, так как ресурс с информацией о версии
недоступен для редактирования.
На это мы закончим рассмотрение объектов браузера и перейдем к остальным.