Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Переменные как свойства окна





Глобальные переменные на самом деле являются свойствами объекта window. В следующем примере мы открываем окно с идентификатором wid, заводим в нем глобальную переменную t и затем пользуемся ею в окне-родителе, ссылаясь на нее как wid. t:

<HTML><HEAD>

<SCRIPT>

wid = window.open('','','width=750,height=100,status=yes');

wid.document.open(); R = wid.document.write;

R('<HTML><HEAD><SCRIPT>var t;<\/SCRIPT></HEAD>');

R('<BODY><H1>Новое окно</H1></BODY></HTML>');

wid.document.close();

</SCRIPT>

</HEAD>

<BODY>

<A HREF="javascript:

wid.t=window.prompt('Новое состояние:','');

wid.document.write(wid.t); wid.focus(); void(0);"

>Изменим значение переменной t в новом окне</A>

</BODY></HTML>

4.4. Изменение переменной открытого окна

Обратите внимание на нюанс: внутри скрипта мы написали <\/SCRIPT>. Комбинация " \/ " выдает на выходе " / ". Сделали мы это для того, чтобы браузер (точнее, его HTML- парсер) не воспринял бы </SCRIPT> как завершающий тэг нашего (внешнего) скрипта. Подробнее этот аспект обсуждался во вводной лекции. Также обратите внимание на алиас (синоним) R, который мы дали методу wid. document.write, чтобы иметь возможность кратко вызывать его как R(...).

Аналогичным образом (с приставкой wid, указывающей на объект окна) можно обращаться ко всем элементам, находящимся в открытом нами окне, например, к формам. В качестве примера рассмотрим изменение поля ввода в окне-потомке из окна-предка. Создадим дочернее окно с помощью функции okno(), в нем создадим форму, а затем обратимся к полю этой формы из окна-предка:

<HTML>

<HEAD>

<SCRIPT>

var wid; // Объявляем глобальную переменную

function okno()

{

wid = window.open('','okoshko','width=500,height=200');

wid.document.open(); R = wid.document.write;

R('<HTML><BODY><H1>Меняем текст в окне-потомке:</H1>');

R('<FORM NAME=f><INPUT SIZE=40 NAME=t VALUE=Текст>');

R('</FORM></BODY></HTML>');

wid.document.close();

}

</SCRIPT>

</HEAD>

<BODY>

<INPUT TYPE=button VALUE="Открыть окно примера" onClick="okno()">

<INPUT TYPE=button VALUE="Написать текущее время в поле ввода"

onClick="window.wid.document.f.t.value=new Date();

window.wid.focus();">

</BODY>

</HTML>

4.5. Изменение поля статуса в открытом окне

Открывая окно- потомок, мы поместили в переменную wid указатель на окно: wid =window.open(...);. Теперь мы можем использовать wid как идентификатор объекта класса Window. Вызов метода window. wid. focus () в нашем случае обязателен, поскольку при нажатии на кнопку "Написать текущее время в поле ввода " происходит передача фокуса в родительское окно (которое может заслонять вновь открытое окно, так что изменения, происходящие в окне-потомке, не будут видны пользователю). Для того, чтобы увидеть изменения, мы должны передать фокус в окно- потомок.

Переменная wid должна быть глобальной, т.е. определена за пределами каких-либо функций (как сделано в нашем примере). В этом случае она становится свойством объекта window, поэтому мы обращаемся к ней в обработчике onClick посредством window. wid. Если бы мы поместили ее внутри описания функции okno(), написав var wid = window.open(...), то мы не смогли бы к ней обратиться из обработчика события onClick, находящегося вне функции okno().

Объект document

Объект document является важнейшим свойством объекта window (т.е. полностью к нему нужно обращаться как window.document). Все элементы HTML-разметки, присутствующие на web-странице - текст, абзацы, гиперссылки, картинки, списки, таблицы, формы и т.д. - являются свойствами объекта document. Можно сказать, что технология DHTML (Dynamic HTML), т.е. динамическое изменение содержимого web-страницы, заключается именно в работе со свойствами, методами и событиями объекта document (не считая работы с окнами и фреймами).

Таблица 4.4. Свойства, методы и события объектаdocument
Свойства Методы События
URL domain title lastModified referrer cookie   linkColor alinkColor vlinkColor open() close()   write() writeln()   getSelection()   getElementById() getElementsByName() getElementsByTagName() Load Unload   Click DblClick   MouseDown MouseUp   KeyDown KeyUp KeyPress

Помимо перечисленных в этой таблице свойств, объект document имеет свойства, являющиеся коллекциями (форм, картинок, ссылок и т.п.); таблица 3.1 предыдущей лекции содержит их описание. Кроме того, можно формировать требуемые коллекции "на лету" с помощью указанных выше методов. Так, document.getElementsByTagName('P') есть коллекция всех HTML-элементов (точнее, соответствующих им объектов) вида <P>, т.е. абзацев. Аналогично, document.getElementsByName('important') выдаст коллекцию (объектов) HTML-элементов любых типов, у которых был задан атрибут NAME="important". Наконец, document. getElementById ('id5') выдаст тот HTML-элемент (если их несколько, то первый), у которого был задан атрибут ID="id5".

С одним методом мы уже часто работали: document.write() - он пишет в текущий HTML-документ. Его модификацияdocument.writeln() делает то же самое, но дополнительно добавляет в конце символ новой строки; это удобно, если потом требуется читать сгенерированный HTML-документ глазами. Если запись идет в HTML-документ нового окна, открытого с помощью window.open(), то перед записью в него нужно открыть поток на запись с помощью метода document.open(), а по окончании записи закрыть поток методом document.close(). После выполнения последнего действия произойдет событие Load (и вызовется соответствующий обработчик события onLoad) у документа, а затем у окна.

События объекта document аналогичны одноименным событиям объекта window (только у document они происходят раньше), либо их смысл понятен из их названия, поэтому мы не будем детально их разбирать.

Остановимся вкратце на свойствах объекта document. Свойства linkColor, alinkColor и vlinkColor задают цвет гиперссылок - непосещенных, активных и посещенных, соответственно. Свойство URL хранит адрес текущего документа (т.е. строковый литерал, равныйwindow. location. href, если страница состоит из единственного документа, а не является набором фреймов). Свойство domain выдает домен (оно аналогично window. location. hostname). Свойство title выдает заголовок страницы (указанный в контейнере <TITLE>),lastModified указывает на дату и время последней модификации файла, в котором содержится данный HTML-документ (без учета времени модификации внешних файлов - стилевых, скриптов и т.п.). Свойство referrer выдает адрес страницы, с которой пользователь пришел на данную web-страницу, кликнув по гиперссылке. Наконец, свойству cookie посвящен целый раздел в "Программируем "за кадром"".

Фреймы (Frames)

Фреймы - это несколько видоизмененные окна. Отличаются они от обычных окон тем, что размещаются внутри них. У фрейма не может быть ни панели инструментов, ни меню, как в обычном окне. В качестве поля статуса фрейм использует поле статуса окна, в котором он размещен. Существует и ряд других отличий.

Если окно имеет фреймовую структуру (т.е. вместо контейнера <BODY> в нем присутствует контейнер < FRAMESET > со вложенными в него контейнерами < FRAME > и быть может другими контейнерами < FRAMESET >), то объект window соответствует внешнему контейнеру< FRAMESET >, а с каждым вложенным контейнером < FRAME > ассоциирован свой собственный объект класса Window.

Каждому окну или фрейму создатель страницы может дать имя - с помощью атрибута NAME контейнера FRAME, либо вторым аргументом метода window.open(). Используется оно в качестве значения атрибута TARGET контейнеров A и FORM, чтобы открыть ссылку или отобразить результаты работы формы в определенном окне или фрейме. Есть несколько зарезервированных имен окон: _self (имя текущего окна или фрейма, где исполняется скрипт), _blank (новое окно), _parent (окно-родитель для данного фрейма), _top (самый старший предок данного фрейма, т.е. окно браузера, частью которого является данный фрейм). Иерархия фреймов, обсуждаемая ниже, как раз и задает, какие окна или фреймы являются родителями для других фреймов.

У каждого объекта класса Window, будь то окно или фрейм, есть также ссылка на соответствующий объект. Как мы знаем, ссылкой на объект текущего окна, в котором исполняется скрипт, является window; кроме того, на него же ссылается свойство self объектаwindow (а также свойство window объекта window - есть и такое!). Ссылку на объект окна, открываемого методом window.open(), выдает сам этот метод. Ссылка на объект - фрейм совпадает с его именем, заданным с помощью атрибута NAME контейнера FRAME. Наконец, у объектов- фреймов есть специальные свойства, дающие ссылки на родительский фрейм (window. parent) и на окно браузера, частью которого является данный фрейм (window.top).

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

Date: 2016-05-24; view: 277; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию