Роботландский Университет © А.А.Дуванов |
В предыдущем разделе были изложены базовые понятие языка JavaScript, а также его синтаксис.
Хотя конструкции языка и рассматривались в
контексте HTML-кода (блок
Но эти функции ничего не меняют на страничке, они работают в собственном окошке. А ведь было сказано, что используя JavaScript, можно перейти к технологиям динамического HTML с его возможностями перерисовывать заново отдельные элементы до кумента, реагировать на действия пользователя.
Чтобы изменять уже нарисованный браузером экран или создавать новые окна, нужно проникнуть в программистскую кухню браузера, получить доступ к его объектам.
Ведь браузер не только отображает теги на экране, он строит для них объекты, помещая их в иерархическую модель документа. Во время работы браузер постоянно следит за моделью. Если свойство объекта изменилось, меняется экранный образ. Менять свойства объектов можно при помощи JavaScript. Вот и динамика на экране!
Объектная модель любого документа имеет всегда одну и ту же структуру, независимо от вида конкретной страницы:
Строго говоря, все представленные на схеме объекты на самом деле являются экземплярами одноименных объектов. Эти экземпляры создаются браузером для каждого конкретного документа в индивидуальном порядке. В дальнейшем будем называть эти экземпляры просто объекты.
Объект window располагается в вершине иерархии. Это означает, что все остальные объекты находятся внутри него, являются его свойствами.
Объект window содержит также свойства и методы окна, в котором браузер показывает документ.
Три метода нам уже хорошо известны: alert, prompt и confirm.
Если написать:
window.alert("Функция alert -- это метод объекта window"); |
то браузер покажет вспомогательное окно, в которое выведет заданное сообщение.
Правда, раньше мы писали более просто:
alert("Функци\я alert -- это метод объекта window"); |
Дело в том, что методы и свойства главного объекта window разрешается записывать без указания принадлежности. Следующие записи эквивалентны:
window.alert("Не все дома, но все пьют чай"); alert("Не все дома, но все пьют чай");
Часто бывает удобно показать что-то пользователю в новом окне, оставляя открытым текущее. Открыть новое окно можно при помощи метода open объекта window. Вызвать метод можно одним из следующих способов:
var переменная = open(); var переменная = open(файл); var переменная = open(файл, имя_окна); var переменная = open(файл, имя_окна, параметры_окна); |
Здесь:
переменная | | Переменная. Указатель на экземпляр создаваемого окна. |
файл | | Строка. Имя файла, который нужно отобразить в открытом окне. Если параметр не задан, создается пустое окно. |
имя_окна | | Строка. Имя окна может использоваться для обращения к созданному окну (значение свойства name объекта window). |
параметры_окна | | Строка. Описание свойств окна. Когда параметр не задан, используются свойства окна по умолчанию. |
Описание объекта window, его свойств и методов содержится в справочнике в конце книги. Рассмотрим здесь некоторые параметры окна. Они задаются в строке параметры_окна в виде:
"параметр1=значение1,параметр2=значение2,...,параметрN=значениеN"
Замечание. Не рекомендуется оставлять пробел после разделительной запятой, так как браузеру Netscape это почему-то не нравится.
Описание параметров:
параметр | значение | описание |
---|---|---|
width | число | Ширина окна в пикселах. Минимальное значение 100. |
height | число | Высота окна в пикселах. Минимальное значение 100. |
scrollbars | Задает отображение линеек протяжки. | |
resizable | yes, no, 1, 0 | Позволяет указать, может ли окно менять свой размер. |
menubar | yes, no, 1, 0 | Позволяет указать, отображается ли полоса меню. |
location | yes, no, 1, 0 | Позволяет указать, отображается ли полоса для ввода адреса. |
status | yes, no, 1, 0 | Позволяет указать, отображается ли полоса статуса. |
toolbar | yes, no, 1, 0 | Позволяет указать, отображается ли полоса кнопок (панель инструментов). |
Поработайте на приведенном ниже испытателе, чтобы лучше понять смысл этих параметров. В качестве файла, задающего содержимого окна, можно указывать:
Замечание. В испытателе строка параметры_окна представлена в виде суммы (конкатенации) строк для удобства размещения испытателя на экране. Так можно делать и в своих программах, чтобы в HTML-файле не было слишком длинных строчек. Там, где требуется разместить строку, всегда можно написать несколько строчек, соединяя их знаком +.
Метод close закрывает открытое окно. При этом обращение close() или window.close() закрывает текущее окно. Обращение win.close() или window.win.close() закрывает окно win, которое было создано из текущего окна при помощи метода open.
Объект document содержит объекты (они являются свойствами
объекта document), моделирующие теги, расположенные в блоке
Один из самых употребительных методов объекта document метод write. Этот метод позволяет осуществить запись в окно документа. Перед использованием метода write, нужно открыть запись (метод open), а по окончании вывода закрыть ее (метод close).
Формат метода open:
переменная.document.open();
Здесь переменная это указатель окна, которое открывается на запись.
Формат метода write:
document.write(строка);
или
переменная.document.write(строка);
Здесь:
переменная | | Указатель окна, в которое будет направлен вывод. Если переменная не задана, вывод направляется в текущее окно браузера. |
строка | | Строка, в которой задается содержание вывода. |
Формат метода close:
document.close();
или
переменная.document.close();
Здесь переменная это указатель окна, которое закрывается для записи.
Замечание. Метод document.open использовать необязательно, так как метод document.write при записи данных в закрытый документ автоматически очищает старый документ и открывает его для новой записи.
При выводе текста в окно он размещается браузером как единый абзац независимо от того, сколько раз была использована функция write.
При помощи метода write в окно можно выводить не только обычный текст, но и текст, размеченный тегами.
Браузер умеет отслеживать действия пользователя и реагировать на них. Это хорошо известно. Если щелчок мыши в окне приходится по ссылке, браузер загружает новый документ. Клавиатурный аккорд Alt+ВЛЕВО возвращает прежнее содержимое окна.
Еще примеры. Пользователь подвел мышиный курсор к картинке. Браузер тут же отображает в небольшом окошке alt-текст из соответствующего тега IMG. Пользователь давит на стрелки клавиатуры, и браузер послушно прокручивает окно.
Эти простые наблюдения показывают: мышь и клавиатура информируют браузер о том, что с ними делает пользователь. Кроме того, браузер в курсе хода загрузки документа. Если не загрузилась картинка (нет на диске, оборвалась связь с сервером), браузер замещает ее прямоугольником.
Все эти информационные сообщения называются событиями. На некоторые события браузер активно отвечает (открывает и закрывает окна, прокручивает экран, загружает документы, выводит информационные сообщения), на другие спокойно взирает, сложа руки. Мы щелкаем мышью по обычному тексту, и ничего не происходит. Браузер не заметил щелчка? Нет, заметил, но у него нет предписаний на этот случай.
Вот обычная кнопка, которую браузер рисует при помощи HTML-кода:
Кнопка задана тегом <INPUT> внутри тега-формы
Реагирует ли браузер на нажатие этой кнопки? Да, конечно, он ее перерисовывает, создавая впечатление, что кнопка вдавливается мышью в экран. Но больше ничего не происходит.
А теперь попробуйте нажать на эту кнопку:
Что изменилось в HTML-коде? В теге <INPUT>
появился новый атрибут onclick. В качестве значения атрибута в
кавычках записана небольшая программа на JavaScript:
Атрибут onclick сообщает браузеру, что надо делать, когда кнопка нажата! Длинную программу записывать как значение атрибута не очень удобно, поэтому часто программируют так:
В этом примере в атрибуте onclick задано короткое обращение
к функции
Функция
Проделайте несколько опытов.
var sum = 0; for (var i = 100; i; i--) sum += i; alert("Сумма 1+2+...+100 = " + sum); |
Итак, JavaScript позволяет записывать в HTML-кодах свои собственные обработчики событий, и, следовательно, делать страничку интерактивной, реагирующей на действия пользователя и другие происшествия (например, окончание загрузки документа).
Ключевое слово onclick в теге это имя атрибута из серии других событийных атрибутов с приставкой on (смотрите справочник в конце книги). Значением таких атрибутов является скриптовый код. Скрипт запускается, если происходит событие, кодируемое самим именем атрибута.
На странице расположены одно поле ввода и четыре кнопки:
\n'+
' \n'+
' \n'+
' интерактивна\я страница\n'+ '\n'+ ' \n'+ ' \n'+ ' |