Объектная модель документа (DOM) — КиберПедия 

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Объектная модель документа (DOM)

2022-10-05 17
Объектная модель документа (DOM) 0.00 из 5.00 0 оценок
Заказать работу

А теперь настало время поговорить о классах и объектах Web-обозревателя подробнее.

Давайте посмотрим на какую-нибудь Web-страницу. Что она собой представляет? Фактически, иерархию элементов. Мельчайшие элементы страницы, например текстовые абзацы, являются потомками более крупных и сложных элементов, например, свободно позиционируемых элементов. Свободные элементы, в свою очередь, могут находиться в других свободных элементах или непосредственно в самой странице. Получается весьма сложная многоуровневая структура, в которой одни элементы зависят от других.

Описать такую структуру можно с помощью объектов. Точнее, сложной иерархии объектов, вложенных друг в друга и зависящих друг от друга. Такая структура называется объектной моделью документа (Document Object Model, DOM). Все современные программы Web-обозревателей представляют Web-страницу как иерархический набор объектов.

Какое преимущество дает пользователям такой подход? Никакого. Все это рассчитано только на программистов, разрабатывающих Web-сценарии.

Каждый из объектов, из которых состоит Web-страница, имеет набор свойств, предоставляющих доступ к значениям различных атрибутов соответствующего тега, методов, с помощью которых этим объектом можно манипулировать, и событий, которые могут в этом объекте происходить и которые можно обрабатывать. Это позволяет управлять практически любым элементом страницы, самой страницей и даже самим Web-обозревателем, используя специально написанные Web-сценарии.

Например, именно таким образом на Web-странице создаются анимированные элементы (см. главу 12). Также с помощью сценариев можно изменять цвета, параметры шрифта и даже само содержимое элементов страницы. Более того, так можно управлять и самим Web-обозревателем: открывать и закрывать вспомогательные окна, перемещаться взад-вперед по списку "истории" и даже принудительно загружать нужные Web-страницы без участия пользователя.

Неужели вы думали, что Web-программисты пройдут мимо такой возможности! Если вы думаете, что пройдут, – вы плохо их знаете. Вспомните, например, что говорилось в предыдущей главе об анимации. Едва появилась возможность немного подвигать по странице тем или иным рисунком, как Web-программисты эту возможность реализовали. А сейчас анимацию поддерживают даже Web-редакторы, и Dreamweaver тому пример.

Но хватит говорить на отвлеченные темы! Давайте все-таки займемся объектной моделью документа.

Сначала выясним, каким образом можно получить доступ к нужному элементу. Для этого ему необходимо дать уникальное имя. Делается это с помощью атрибута ID или NAME. Атрибут ID поддерживается практически всеми тегами HTML, атрибут NAME – только некоторыми. К тегам, поддерживающим этот атрибут, относятся формы, элементы управления, фреймы, гиперссылки и некоторые другие.

Но почему же нельзя пользоваться только атрибутом ID? Все дело в проклятой несовместимости Navigator 4.x и интернет-стандартов. Старые версии Navigator используют атрибут ID только для присвоения элементам стилей, а для задания имен признают только атрибут NAME. Видите, какая морока!..

Дав с помощью атрибутов ID или NAME элементу страницы уникальное имя.вы можете обращаться к нему из сценария, вызывая его методы и свойства. Интерпретатор сам найдет нужный элемент по его имени. Для доступа к элементу страницы в Internet Explorer используется синтаксис:

<Имя элемента, заданное в атрибутах ID или NAME>.<Свойство или метод>

Если же вы пишете сценарий для Navigator 4.x, делайте так:

document["<Имя элемента, заданное в атрибуте NAME>"].<Свойство или метод>

Давайте приведем небольшой пример, поясняющий вышесказанное.

<P ID="para" STYLE="color: #0000FF">Некийтекст.</P>

Сначала мы создали текстовый абзац, назвали его para (обратите внимание на значение атрибута ID) и присвоили ему встроенный стиль, задающий цвет текста. Сейчас мы этот цвет текста изменим, воспользовавшись Web-сценарием.

para.style.color = "#FF0000";

Здесь нужны дополнительные пояснения. Дело в том, что каждый элемент страницы в объектной модели документа имеет внутренний объект style, дающий доступ к его встроенному стилю. Обратиться к этому объекту можно через одноименное свойство, что мы и сделали. А уж объект style предоставляет доступ ко всем атрибутам встроенного стиля через одноименные свойства. В данном примере для получения доступа к значению атрибута стиля color использовалось свойство color.

Вы можете изменить выравнивание текста этого абзаца, обратившись к свойству align:

para.align = "center";

Свойство align предоставляет доступ к значению атрибута ALIGN тега <р>.

К несчастью, вышеприведенный пример будет работать только в самых последних программах Web-обозревателей. Пресловутый Navigator 4.x не позволяет изменять внешний вид и содержимое элементов страницы после ее загрузки. Исключение составляют только графические изображения, фреймы и слои.

А вот этот код будет работать везде:

<IMG NAME="someImage" SRC="image1.gif">

document["someImage"].src = "image2.gif";

Он меняет файл, содержимое которого отображается в элементе графического изображения, на другой. Для этого он присваивает иное значение свойству src объекта somelmage, предоставляющее доступ к атрибуту SRC тега <IMG>.

Чтобы получить доступ к самой Web-странице, воспользуйтесь системным объектом document. В частности, вы можете задать цвет гиперссылок, воспользовавшись свойством linkColor, предоставляющим доступ к значению атрибута LINK тега <BODY>:

document.linkColor = "#FF0000";

Оба рассмотренных нами объекта представляют собой соответственно видимый элемент страницы и саму страницу. Оба этих объекта были созданы с помощью тегов HTML. Теперь же мы начнем рассмотрение объектов, не являющихся элементами страницы. Это объекты Web-обозревателя, не видимые пользователю.

Объект document имеет внутренний объект location, предоставляющий доступ к интернет-адресу страницы и различным его частям. Доступен он через одноименное свойство. Воспользовавшись этим объектом, мы можем узнать, с какого интернет-адреса была загружена данная страница:

address = document.location.href;

…выяснить имя файла этой страницы:

filename = document.location.pathname;

…либо загрузить другую страницу:

document.location.href = "http://www.othersite.ru/otherpage.htm";

Объект window представляет текущее окно Web-обозревателя либо текущий фрейм, если страница загружена во фрейме. С помощью этого объекта вы можете, например, закрыть это окно:

window.close();

…или заменить текст, отображаемый в его строке статуса:

window.status = "Сейчас работает Web-сценарий!";

Объект window имеет внутренний объект navigator, предоставляющий доступ к самой программе Web-обозревателя. Доступен он через одноименное свойство. Воспользовавшись этим объектом, мы можем выяснить, например, версию программы:

version = window.navigator.appVersion;

…илиназвание:

programName = window.navigator.appName;

Объект window имеетвнутреннийобъект history, предоставляющийдоступксписку "истории" Web-обозревателя. Он доступен также через одноименное свойство. Воспользовавшись этим объектом, мы можем "путешествовать" по списку "истории" вперед:

window.history.forward();

…иназад:

window.history.back();

В объектной модели документа существует также еще несколько других объектов, но рассматриваться они не будут. Эти объекты применяются достаточно редко и в весьма специфических случаях. Если же вы все-таки захотите узнать побольше об объектной модели документа, обратитесь к соответствующей литературе.

Как пишутся Web-сценарии

Вот и закончился ликбез по JavaScript и объектной модели документов. Пришло время поговорить о том, как же пишутся Web-сценарии.

Прежде всего, выясним, как JavaScript-код помещается в HTML-код. Для этого служит парный тег <SCRIPT>…</SCRIPT>, внутри которого помещается код сценария. Вне этого тега помещать сценарий можно, но выполняться он не будет.

Вообще, все Web-сценарии можно разделить на два вида: выполняющиеся при загрузке страницы (загрузочные) и вызывающиеся в ответ на событие (обработчики событий). В зависимости от того, является сценарий загрузочным или обработчиком, различается способ его реализации.

Сценарии, выполняющиеся при загрузке страницы, представляют собой обычный код на JavaScript, помещенный втег<SCRIPT>. Он имеет такой вид:

<FORM ACTION="http://www.somesite.ru/cgi/prograra.pl">

<INPUT TYPE="text" NAME="txtDate">

<SCRIPT>

var d;

d = new Date();

document.forms[0].txtDate.value = d.toString();

</SCRIPT>

</FORM>

Этот сценарий помещает в поле ввода txtDate значение текущей даты. (О формах и элементах управления см. главу 16.) Для этого он вызывает свойство value, отображающее значение, введенное в поле ввода. Заметьте, что для именования поля ввода мы использовали атрибут NAME, поэтому вышеприведенный код будет работать также и в Navigator 4.x.

Этот сценарий будет выполняться непосредственно при загрузке страницы. Сначала Web-обозреватель загрузит и распознает тег <FORM>, потом – тег <INPUT>, а сразу за ним выполнит наш сценарий. Такие сценарии очень часто используются для занесения начальных значений в элементы управления и вообще для выполнения различных предустановок.

Мы поместили код сценария сразу же за тегом, задающим поле ввода, к которому мы обращаемся. Если бы мы поместили сценарий перед тегом, Web-обозреватель не смог бы найти объект txtDate, т. к. он еще не был бы создан, и выдал бы сообщение об ошибке. Имейте это в виду, когда будете писать загрузочные сценарии.

Если нужно, чтобы какие-либо предустановки выполнились перед тем, как будет загружен какой-либо "видимый" на странице HTML-код, выполняющий их сценарий помещается в секцию HTML-заголовка страницы (тег <HEAD>). В основном, это касается кода, выполняющего предустановки для других сценариев, чаще всего, обработчиков событий.

Теперь поговорим о сценарии обработчика событий. И рассмотрим пример такого обработчика:

<HEAD>

<SCRIPT>

function para_onClick() {

para.style.color = "#FF0000";

}

</SCRIPT>

</HEAD>

 

<BODY>

<P ID="para" STYLE="color: #0000FF" onClick="para_ondick();">Некийтекст.</P>

</BODY>

Это как раз пример сценария, помещаемого в секцию HTML-заголовка страницы. Он представляет собой функцию para_ondick, чей код меняет цвет текста абзаца para. Поместив сценарий в секцию HTML-заголовка, мы можем быть уверены, что Web-обозреватель обработает этот код перед тем, как будет загружена страница, и "отложит" определения функций в "долгий ящик", чтобы вызвать их впоследствии, при наступлении соответствующего события.

А теперь обратимся к нашему текстовому абзацу. Что видим? Нечто странное… Откуда-то взялся новый, не знакомый нам атрибут onclick. Что он делает?

Это не совсем атрибут. Вернее, совсем не атрибут, хотя и выглядит похоже. Таким способом в HTML к какому-либо событию, происходящему в элементе страницы, привязывается обработчик. Общий синтаксис такой "привязки" следующий:

<Имя события>="<Код сценария обработчика>"

В данном случае мы привязали вызов функции para_onclick в качестве обработчика к событию onclick, происходящему, когда пользователь щелкает мышью по этому абзацу.

Вообще, код этого обработчика столь мал, что его можно без всяких последствий поместить прямо в тег <р>:

<P ID="para" STYLE="color: #0000FF" onClick="para.style.color = #'FF0000';">Некийтекст.</P>

Таким образом, мы значительно уменьшим размер HTML-кода страницы, что нам совсем не помешает.

 

 

Используйте варианты поведения JavaScript в Adobe Dreamweaver, чтобы посетители могли менять оформление веб-страницы или запускать определенные задачи.

Поведение Adobe Dreamweaver помещает код JavaScript в документы, чтобы посетители могли менять оформление веб-страницы или запускать определенные задачи. Поведение — это комбинация события и действия, инициированного при возникновении этого события. На панели «Поведение» на страницу можно добавить поведение, определив действие и затем событие, которое инициирует это действие.

Примечание.

Код поведения — это клиентский код JavaScript, то есть код, который выполняется в браузерах, а не на серверах.

События — это, фактически, генерируемые браузерами сообщения о том, что посетитель страницы выполнил какое-то действие. Например, когда посетитель перемещает указатель над ссылкой, браузер генерирует для этой ссылки событие onMouseOver; затем браузер проверяет, нужно ли вызвать в ответ какой-либо код JavaScript (содержащийся в просматриваемой странице). Для разных элементов страницы существуют разные события; например, в большинстве браузеров события onMouseOver и onClick связаны со ссылками, а событие onLoad связано с изображениями и body документа.

Действие — это готовый код JavaScript для выполнения таких задач, как открытие окна браузера, показ или скрытие AP-элементов, воспроизведение звуков или остановка ролика Adobe Shockwave. Действия, предоставляемые продуктом Dreamweaver, обеспечивают максимальную совместимость с различными браузерами.

Если элементу страницы назначено поведение, то каждый раз, когда происходит данное событие для этого элемента, вызывается действие (код JavaScript), связанное с данным событием. (В разных браузерах одно и то же действие может вызываться разными событиями.) Например, если назначить ссылке действие «Вывод сообщения» и указать, что это действие будет вызываться событием onMouseOver, сообщение будет появляться каждый раз, когда кто-то поставит указатель мыши на ссылку.

Одно событие может инициировать несколько различных действий, порядок выполнения которых можно задать.

Dreamweaver предлагает около двух десятков действий. Другие действия можно найти на веб-сайте Exchange www.adobe.com/go/dreamweaver_exchange_ru и на сайтах других разработчиков. Хорошо владея языком JavaScript, можно создавать собственные действия.

Примечание.

Термины поведение и действие относятся к Dreamweaver, а не HTML. Действие с точки зрения браузера — это обычный фрагмент кода JavaScript.

 


Поделиться с друзьями:

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.049 с.