Отображение диалоговых окон

Объект window использует три метода отображения сообщений, добавляя в сценарий элементы интерактивности. Мы уже использовали их в рассмотренных сценариях.

Метод alert отображает диалоговое окно с сообщением для пользователя. Оно содержит только одну кнопку ОК.

Метод confirm отображает диалоговое окно подтверждения выполнения операции. Оно содержит кнопки ОК и Cancel (Отмена), позволяющие выбрать один из вариантов.

Метод prompt запрашивает у пользователя необходимые для сценария данные. Он возвращает введенный пользователем текст.

Создание сценария отображения диалоговых окон

В качестве наглядного примера применения разных диалоговых окон приведен листинг 23.1 с кодом HTML-документа, позволяющим протестировать диалоговые окна.

Листинг 23.1. Документ HTML, отображающий диалоговые окна сообщения, подтверждения и запроса


    <HTML><HEAD><TITLE>Разные диалоговые окна</TITLE></HEAD>
    <BODY>
    <H1>Разные диалоговые окна</H1>
    <HR>
    Для тестирования используйте кнопки
    <HR>
    <FORM NAME="winform">
    <INPUT TYPE="button" VALUE="Сообщение"
    onClick="window.alert('Пример сообщения');">
    <p><INPUT TYPE="button" VALUE="Подтверждение"
    onClick="temp=window.confirm('Правильно?');
    window.status=(temp) ? 'Если true' : 'Если false';">
    <p><INPUT TYPE="button" VALUE="Запрос"
    onClick="var temp=window.prompt('Введите текст','Значение по умолчанию');"
    window.status=temp;">
    </FORM>
    <BR>Вот такие дела
    <HR>
    </BODY>
    </HTML>
                   

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

Проще всего вызывается сообщение. Оно отображается после щелчка на первой кнопке.

  • После щелчка на второй кнопке в строке состояния отображается возвращаемое значение.
  • Третья кнопка используется для вывода диалогового окна запроса данных. Заметьте, что метод prompt имеет и второй параметр, определяющий значение по умолчанию, которое указывается в поле. Если в этом диалоговом окне щелкнуть на кнопке Cancel, то будет возвращено значение null.

    Управление фреймами

    Использование объектов фреймов

    При разделении окна на отдельные фреймы управление ими осуществляется с помощью объекта frame. Объект frame используется для управления только текущим фреймом. Этот объект синтаксически равноправен отрибуту name в дескрипторе <FRAME>

    Вы еще помните, что оба ключевых слова window и self соответствуют текущему окну? При использовании фреймов эти ключевые слова относятся к текущему фрейму. Еще одно ключевое слово parent позволяет обращаться к главному окну браузера.

    Каждый объект frame выступает в качестве дочернего по отношению к родительскому объекту window. В листинге 23.2 приведен код HTML определения набора фреймов.

    Листинг 23.2. Документ HTML с фреймами

    
        <FRAMESET ROWS="*,*" COLS="*,*">
        <FRAME NAME="topleft" SRC="topleft.htm">
        <FRAME NAME="topright" SRC="topright.htm">
        <FRAME NAME="bottomleft" SRC="bottomleft.htm">
        <FRAME NAME="bottomright" SRC="bottomright.htm">
        </FRAMESET>
                       

    Этот код разделяет документ HTML на равные четверти. Если вы имеете готовый файл topleft.htm, то он будет соответствовать объекту parent.topleft. В этом случае ключевые слова window и self также будут соответствовать фрейму topleft.

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

    Массив frames

    Вместо того чтобы в программе обращаться к фрейму по имени, можно использовать массив frames. Он сохраняет сведения обо всех фреймах документа. В этом случае фреймы индексируются (начальное значение 0) и определяются в дескрипторе <FRAME>.

    Например, вы можете обращаться к фреймам в листинге 23.2 с помощью следующего кода:

    parent.frames[0] соответствует фрейму topleft

    parent.frames[1] соответствует фрейму topright

    parent.frames[2] соответствует фрейму bottomleft

    parent.frames[3] соответствует фрейму bottomright

    Для обращения к фрейму документа можно использовать и иерархическую структуру объектов. Выбирайте тот способ, который проще и удобнее для использования. Например, в документе, состоящем из 10 фреймов, к фреймам проще обращаться как к элементам массива. А двухфреймовым документом проще управлять с помощью имен объектов.

    Создание навигационного фрейма

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

    Сначала необходимо определить набор фреймов. Это проще простого. Листинг 23.3 показывает, как определить фреймы, разделяющие страницу на левую и правую области.

    Листинг 23.3. Документ HTML с фреймами

    
        <HTML>
        <HEAD>
        <TITLE>Навигационный фрейм</TITLE>
        </HEAD>
        <FRAMESET COLS="*,*">
        <FRAME NAME="left" SRC="left.htm">
        <FRAME NAME="right" SRC="about:blank">
        </FRAMESET>
        </HTML>
                       

    Затем нам необходимо определить документ для левого фрейма, используемого для перемещения по документу другого фрейма. Он представлен в листинге 23.4

    Листинг 23.4. Документ HTML навигационного фрейма

    
        <HTML>
        <HEAD>
        <TITLE>Навигационный фрейм</TITLE>
        </HEAD>
        <BODY>
        <P>
        Одна из следующих ссылок загружает новую
        страницу в правой области
        </P>
        <UL>
        <LI><A HREF="#"
        onClick="parent.right.location='order.htm';
                 window.location='ordernav.htm';">
        Order Form</A>
        <LI><A HREF="#"
        onClick="parent.right.location='email.htm';
                 window.location='emailnav.htm';">
        Email</A>
        <LI><A HREF="#"
        onClick="parent.right.location='sales.htm';
                 window.location='salesnav.htm';">
        Sales</A>
        <LI><A HREF="#"
        onClick="parent.right.location='links.htm';
                 window.location='linksnav.htm';">
        Other Links</A>
        </UL>
        </BODY>
        <HTML>
                       

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

    onClick="parent.right.location='order.htm';
    window.location='ordernav.htm';">

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

    Если вы хотите только загрузить указанный документ после щелчка на ссылке, используйте атрибут TARGET дескриптора <А>. Он позволяет избежать использование сценария JavaScript. Если вы добиваетесь одновременного обновления обоих кадров, используйте приведенный выше код.

    Чтобы протестировать сценарий, загрузите его в браузере. Убедитесь, что после щелчка на ссылке в правой области загружается необходимый документ HTML (их сделаете сами). Сначала загрузите код листинга 23.3.

nextn.bmp (246 bytes)

home.gif (161 bytes)

next.gif (900 bytes)

Сайт управляется системой uCoz