Преимущество JavaScript, даже по сравнению со сложнымы языками программирования, состоит в том,
что он позволяет управлять браузером. Сценарий позволяет загрузить в окне браузера новую
вэб-страницу, управлять внешним ее видом и преобразовывать документ, а также запускать новые
окна браузера.
Для того, чтобы справиться со всеми этими операциями, в JavaScript включена специальная
иерархическая структура - объектная модель документа (DOM). В соответствии с ней все объекты
сценария организованы в древовидную структуру, отвечающую за все без исключения элементы
вэб-страницы: окно, документ, рисунок и т.п.
Объекты DOM, как и другие объекты, имеют свойства, описывающие вэб-страницу, и методы,
позволяющие управлять частью документа.
Объекты браузера упорядочены в иерархическом порядке, создавая структуру родительских и
дочерних объектов. При определении объекта вы сначала вводите имя родительского объекта, после
него ставите разделитель (точку), а затем имя дочернего объекта. Например, объекты,
соответствующие рисункам вэб-страницы, соответствуют дочерним объектам родительского объекта
document. В следующем примере определен объект image7, который является дочерним по отношению к объекту document, который, в свою очередь, тоже дочерний - только уже
по отношению к объекту window:
window.document.image7
Объект window находится на самой верхушке иерархической
структуры.
История DOM
Начиная с версии 1.1 (реализованной в Netscape Navigator 2.0), в JavaScript включены объекты
браузера, позволяющие управлять частью документа HTML и элементами браузера. Но на то время
объекты браузера еще не стали стандартом. Хотя NN и IE уже использовали эту модель, не
существовало гарантий, что новый объект будет в них поддерживаться стопроцентно. К тому же одни
и те же объекты выполнялись в этих двух браузерах по-разному.
В настоящее время также существует разница в объектных моделях браузеров Netscape и Microsoft.
Но, с момента выпуска NN 3.0 и IE 4.0 все основные объекты поддерживаются обоими браузерами и
выполняются одинаково.
Совсем недавно консорциум W3C (World Wide Web Consortium - Консорциум по стандартизации Web)
разработал стандарт DOM. В этот стандарт включены не только базовые объекты, но и объекты
управления частями документа HTML, а также объекты, поддерживаемые в XML.
Стандарт DOM частично поддерживается как в NN, так и в IE. Максимально усовершенствованы для
поддержки нового стандарта - NN 6.0 и IE 5.0 и выше.
Объекты Window
Иерархическая структура объектов браузера начинается с объекта window. Он представляет окно браузера. Вы уже знакомы с этим
объектом.
Свойство window.status используется для изменения вида
строки состояния.
Методы window.alert, window.confirm и window.prompt позволяют отображать диалоговые окна с разными
запросами.
Одновременно можно использовать несколько объектов window, каждый для открытого окна браузера. Фреймы также
представляются объектами window. Детально об окнах и
фреймах позже.
Управление web-документами
Объект document представляет объект web-документа или
web-страницы. Документы или страницы отображаются в окне обраузера, поэтому не удивительно, что
объект document дочерний по отношению к объекту window. Изменения, проведенные с помощью объекта document, будут отображаться в окне браузера, а поэтому
сказываются на объекте window.
Для отображения текста на вэб-странице используется метод document.write. Примеры сценариев, рассмотренные нами ранее,
рассчитаны на запуск только одного окна браузера, поэтому в них не было необходимости вводить
имя родительского объекта window.document.write. В
многооконной среде использовать длинную запись метода просто необходимо.
Получение информации о браузере
Некоторые свойства объекта document используются для
получения сведений о браузере и текущем документе.
Свойство URL используется для определения адреса текущей
web-страницы. Адрес вводится одним словом. Изменить это свойство нельзя. Если необходимо
открыть в окне браузера другую страницу, используйте объект window.location.
Свойство title содержит заголовок текущей страницы,
определенный после дескриптора <TITLE>.
Свойство referrer определяет адрес вэб-страницы,
просматриваемой до отображения текущего вэб-документа. Как правило, на ней есть ссылка на
текущую страницу.
Свойство lastModified содержит дату последнего изменения
вэб-страницы. Эта дата сохраняется на сервере и присылается при отображении вэб-страницы в
браузере.
В приведенном ниже примере продемонстрирован документ HTML, в котором отображается дата
последнего его изменения.
Листинг 18.1. Отображение даты последнего изменения документа
1: <HTML><HEAD><TITLE>Тестирование документа</TITLE></HEAD>
2: <BODY>
3: Эта страница последний раз была изменена:
4: <SCRIPT LANGUAGE="JavaScript">
5: document.write(document.lastModified);
6: </SCRIPT>
7: </BODY>
8: </HTML>
В некоторых случаях свойство lastModified не выполняется
в вэб-страницах. Даты последнего изменения сохранены на сервере, а некоторые сервера не
сохраняют дату изменения страницы.
Добавление в документ текста
Простейший метод объекта document - это тот, который
используется чаще других. Фактически вы его уже многократно использовали. Метод document.write отображает текст в окне браузера. Этот оператор
используется тогда, когда необходимо добавить результат выполнения операций на вэб-страницу.
Подобный ему метод document.writeln также позволяет
отобразить в окне браузера текст и содержит в конце строки оператор /n. Этот оператор указывает на то, что в этой строке больше
ничего отображаться не будет. Поэтому метод document.writeln используется в тех случаях, когда необходимо в
одной строке вывести только результат.
Эти методы используются только в теле вэб-страницы и выполняются при ее загрузке. Вы не можете
добавить результат в уже загруженную страницу без ее перезагрузки. О том, как вставить в
документ новые данные, дальше.
Метод document.write используется только в в сценарии,
размещенном в теле документа. Его можно исопользовать и в функции, вызов которой обязательно
осуществляется в теле документа HTML.
Вопросы для самоконтроля
(Если в почтовой программе кнопка не срабатывает, сохраните страницу на диск и откройте в
браузере.)