:: WEB ДИЗАЙН  
Введение
Основы HTML
Основы форматирования
Формы и фреймы
Введение в сценарии

5. Введение в сценарии

В предыдущих разделах данного руководства мы изучили основы языка HTML. Полученных знаний вполне достаточно для представления разнообразной информации в Web, но не для создания коммерческих сайтов. В данной главе мы пойдем немножко дальше, но информация представленная здесь носит вводный характер. Для углубленного изучения данных тем вам понадобятся дополнительные знания в области программирования и операционных систем.

5.1. Сценарии выполняемые сервером

Для того чтобы понять, что такое серверные сценарии расмотрим ( достаточно упрощенно ) схему взаимодействия Web-клиент/Web-сервер. При вводе пользователем, в адресной строке броузера, URL необходимого ресурса или активизации гиперссылки, Web-броузер посылает http-запрос серверу:

[Метод запроса] [URL ресурса] [Заголовок]

Например для получения документа - doc1.htm запрос выглядит примерно так:

pascal/GET /doc1.htm HTTP/1.0pascal/

Результатом обработки запроса Web-сервером является http-ответ:

[Заголовок] [Код возврата] [MIME-заголовок] [Пустая строка-разделитель] [Тело ответа]

Например если наш предыдущий запрос Web-серверу прошел успешно, ответ будет примерно таким:

HTTP/1.0 200 ОК
Content-Type: text/html

pascal/<HTML>
содержимое документа doc1.htm
</HTML>
pascal/

В результате данного взаимодействия мы получим от Web-сервера и увидим в окне Web-броузера содержимое HTML-документа - doc1.htm. Такое взаимодействие позволяет получать и просматривать любые статические ресурсы сервера, но как быть когда мы хотим большего. Например мы хотим обрабатывать данные, введенные пользователем в формы на нашей Web-странице, или наоборот отправить пользователю результаты работы прикладной программы в формате HTML. Все эти задачи решаются при помощи сценариев выполняющихся на сервере.

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

По большому счету сценарии можно разделить на две больших группы: сценарии внедряемые в HTML-документы и CGI-сценарии.

Внедряемые сценарии

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

Технология внедрения сценария в документ и язык разработки зависят от типа платформы Web-сервера и его настройки.

Для платформы NT/IIS существует реализация данной технологии под названием ASP ( Active Server Pages - Активные страницы сервера ). Документы-активные страницы должны иметь расширение ASP, сценарии пишутся на VBscript или Jscript, а их внедрение осуществляется при помощи директивы <% код сценария %>.

Для платформы UNIX/Apache выбор средств гораздо больше, один из вариантов реализации данной технологии это внедрение сценариев на языке PHP. Данные документы должны иметь расширение PHP, а внедрение сценария в документ осуществляется при помощи директивы <?PHP код сценария ?>.

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

<HTML>
<HEAD>
<TITLE>Документ test.php со сценарием счетчика</TITLE>
</HEAD>
<BODY>
<H1 align=center>Добрый день !</H1>
<p>Вы являетесь <?PHP

  pascal/    $counter=0;
    $filename = "count.dat";
    $fp = @fopen($filename,"r");
    if ($fp) {
        $counter=fgets($fp,10);
        fclose($fp);
    } 
    $counter++;
    print $counter;
    $fp = fopen($filename,"w");
    if ($fp) {
        $counter=fputs($fp,$counter);
        fclose($fp);
    }pascal/
?> посетителем моего сайта !!!
<HR>
... данные страницы ....
</BODY>
</HTML>

CGI-сценарии

CGI-сценарии это приложения разработанные в соответствии со спецификацией CGI ( Common Gateway Interface ). Данная спецификация описывает формат и общие правила обмена данными между Web-сервером и внешним приложением. Для обработки потока данных от клиента к Web-серверу и формирования обратного потока из результатов работы приложения в спецификакции CGI определены следующие элементы:

  • Переменные окружения - набор переменных среды, которые заполняются сервером при запуске CGI-сценария и содержат информацию о служебных параметрах http-запроса, который инициировал запуск данного сценария;

  • Аргументы командной строки - используются для передачи CGI-сценарию входных параметров, которые передаются как часть URL. Например: http://www.site.ru/cgi-bin/prog.pl?par1=val1;

  • Стандартные потоки ввода/вывода - при передачи данных от сервера CGI-сценарию организуется взаимодействие: поток STDOUT сервера с потоком STDIN сценария, а при обратной передаче: поток STDOUT сценария взаимодействует с потоком STDIN сервера;

Для разработки CGI-сценариев, подходит множество языков программирования. Единственное ограничение - это поддержка данного языка платформой Web-сервера. Поскольку CGI-сценарий является внешним приложением ( не внедряется в документ ) для его разработки можно использовать компилируемые языки программирования. Основные языки разработки CGI-сценариев следующие:

  • Unix Shell (интерфейс командной строки Unix);

  • Perl (интерпретатор);

  • C, С++ (компилятор);

  • Visual Basic (компилятор);

В общих чертах алгоритм разработки CGI-сценария выглядит следующим образом:

  1. Определение метода http-запроса.
    Для этого необходимо считать значение стандартной переменной среды сервера REQUEST_METHOD, в которой содержится тип http-запроса: GET, POST ( например в языке С для доступа к переменным среды используется функция - getenv("ИМЯ ПЕРЕМЕННОЙ") );

  2. Получение данных от сервера.
    Для метода GET данные передаются как часть URL запроса. Часть URL ( остаток после имени сценария ), содержащая передаваемые параметры, записываются в переменную среды сервера QUERY_STRING ( в данном случае действует ограничение на длину передаваемого блока данных, обычно при записи URL усекается до 255 знаков ).
    Для получения данных необходимо считать значение переменной среды QUERY_STRING. Например при отправке данных из формы HTML-документа на обработку сценарию-prg, http-запрос будет выглядеть так:

    pascal/GET http://www.site.ru/cgi-bin/prg?поле1=знач1&поле2=знач2...pascal/

    А переменная среды QUERY_STRING = pascal/поле1=знач1&...&полеN=значNpascal/

    Для метода POST данные передаются в STDIN сценария как тело http-запроса, в переменную среды сервера CONTENT_LENGTH записывается количество символов входного потока, а в переменную CONTENT_TYPE записывается MIME-тип передаваемых данных.
    Для получения данных необходимо считать CONTENT_LENGTH символов из STDIN сценария. Например при отправке данных из формы HTML-документа, на обработку сценарию-prg, http-запрос будет выглядеть так:

    pascal/POST http://www.site.ru/cgi-bin/prg HTTP/1.0
    Content-Type: application/x-www-form-urlencoded
    pascal/

    pascal/поле1=знач1
    ...
    &полеN=значN
    pascal/

  3. Декодирование полученные данных.
    Для дальнейшего использования полученных данных необходимо выполнить их небольшое преобразование, поскольку в полученной последовательности все пробелы заменяются символом +, а символы с десятичным кодом более 128 заменяются на %ХХ, где ХХ-шестнадцатеричный код;

  4. Обработка данных.
    Производится выполнение основных функций CGI-сценария, это может быть операции поиска в БД, выполнение определенных расчетов на основе полученных данных, регистрация пользователя в БД, обработка почты и многое другое;

  5. Формирование ответа в форме HTML-документа.
    Производится динамическое создание HTML-документа содержащего результаты работы сценария и вывод его в STDOUT сценария. В простейшем случае формируется документ содержащий уведомление пользователя о выполнение сценария. Перед выводом в STDOUT, сценария документ необходимо снабдить MIME-заголовком и разделительной строкой ( пара символов CR ) отделяющей заголовок от содержимоого тела ответа. Например вот так:

    pascal/Content-Type: text/html
    pascal/

    pascal/<HTML>
    Все ОK !
    </HTML>
    pascal/

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

Вот пожалуй и все о сценариях сервера. Как я уже говорил, изложенный в этой главе материал, носит ознакомительный характер. Я не являюсь экспертом в области разработки приложений Web-сервера ( моя основная работа с этим не связана ). Информация данного раздела пригодится вам для понимания общих принципов разработки приложений Web-клиент/Web-сервер.

Для углубленного изучения материала вам придется прикупить литературы по конфигурированию ПО Web-серверов, программированию и сетевым протоколам. Много полезного можно найти в Internet ( благо ключевых слов, вы теперь знаете много: CGI, ASP, PHP... ).

Рекомендую вам посетить сайты, материалы которых я использовал для подготовки данной главы:

  • perl.mastak.ru - сайт клуба знатаков CGI, почитайте раздел Статьи/Articles и вы найдете массу примеров сценариев и рекомендаций специалистов-практиков по настройке Web-серверов и разработке приложений;
  • CGI от CITFORUM - раздел на сайте центра информационных технологий, посвященный CGI программированию, содержит массу учебных и справочных материалов;

  • ASP от CITFORUM - раздел на сайте центра информационных технологий, посвященный технологии ASP, содержит массу материалов по данной теме;

  • PHP от CITFORUM - раздел на сайте центра информационных технологий, посвященный PHP программированию, содержит описание языка, примеры и методы разработки PHP-сценариев;

  • wml.webservis.ru - сайт CGI-для всех, учебный сайт типа - CGI для чайника, много примеров и ссылок;

5.2. Сценарии выполняемые клиентом

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

Итак, сценарии выполняемые клиентом это - фрагмент кода интерпретируемого языка программирования ( поддерживаемого броузером ), который внедряется в HTML-документ и выполняется Web-броузером в процессе работы пользователя с документом.

Для чего они предназначены, как и на чем разрабатываются и используются в HTML-документах ?

Назначение сценариев выполняемых клиентом

  • Разработка интерактивных HTML-документов стандарта DHTML ( Dinamic HTML ), элементы оформления и даже содержание которых, меняются в зависимости от действий пользователя ( без обмена данными с сервером ! );
  • Разработка документов содержащих анимационные элементы ( и даже Web-страниц с играми );

  • Настройка внешнего вида документа под параметры конкретного рабочего места клиента ( определение типа и версии броузера и экранных параметров );

  • Предварительная обработка данных из форм перед их отправкой на сервер ( обидно - заполнить большую форму, потом ожидать завершения транзакции с БД, а в результате получить ответ сценария сервера типа - НЕВЕРНАЯ ДАТА );

Средства разработки сценариев

При разработке сценариев интерактивного управления используются как правило два интерпретируемых языка программирования:

  • JavaScript - язык разработки сценариев интерактивного управления для Web-страниц, разработанный фирмой Netscape на основе языка Java ( Java - разработка фирмы Sun Microsystems ). Поддерживается всеми современными броузерами.

  • VBScript - язык разработки сценариев интерактивного управления для Web-страниц, разработанный фирмой Microsoft на основе языка VisualBasic. Поддерживается броузером Internet Explorer.

Вывод очевиден - для лучшей совместимости с броузерами используем JavaScript.

Для разработки сценариев используются методы объектно-ориентированного программирования, управляемого событиями. Данный метод заключается в сопоставлении различным объектами HTML-документа и Web-броузера, сценариев ( функций ) - обработчиков различных событий.

Внедрение сценария в документ

Внедрение сценария в документ это "штатная" возможность HTML. Рассмотрим способы и правила внедрения:

Для начала необходимо задать язык разработки сценариев для нашего HTML-документа. Это делается при помощи мета-записи Content-Script-Type  в заголовке нашего документа. Например вот так:

pascal/<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">pascal/

или так:

pascal/<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/vbscript">pascal/

Мы можем и не определять тип сценариев документа данным способом, но гораздо проще задать его один раз в заголовке, чем при каждом использовании сценариев.

Как я уже обмолвился ранее, внедрение сценария в документ осуществляется "штатными" средствами HTML, рассмотрим как это сделать.

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

Для внедрения используется контейнерный формат записи тега, с атрибутом TYPE, задающим тип сценария:

pascal/<SCRIPT TYPE="text/javascript">
/* код сценария на Javascript */
document.write("Hi !!!");
</SCRIPT>
pascal/

Для связывания документа с внешним файлом сценария, используется одиночный формат записи тега, с атрибутом SRC, задающим URL файла сценария:

pascal/<SCRIPT SRC="script.js" TYPE="text/javascript">pascal/

pascal/<SCRIPT SRC="script.vbs" TYPE="text/vbscript">pascal/

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

OnLoad Броузер заканчивает открытие документа HTML
OnUnload Броузер выгружает документ HTML
OnClick Пользователь щелкнул мышью по элементу
OnDblClick Пользователь дважды щелкнул мышью по элементу
OnMouseDown Пользователь нажимает кнопку мыши
OnMouseOver Пользователь перемещает мышь поверх элемента
OnMouseMove Пользователь перемещает мышь поверх элемента
OnMouseOut Пользователь перемещает мышь, выходя из элемента
OnFocus Элемент получает фокус ввода
OnBlur Элемент теряет фокус ввода
OnKeyPress Пользователь нажимает и отпускает клавишу
OnKeyDown Пользователь нажимает клавишу над элементом
OnKeyUp Пользователь отпускает клавишу над элементом
OnSubmit Данные из формы переданы Web-серверу
OnReset Форма очищена
OnSelect Пользователь выбирает текст в текстовом поле
OnChange Потеря фокуса ввода элементом после изменения его значения

При использовании данных атрибутов в тегах HTML, следует понимать, что не каждый элемент документа может породить определенное событие. Например в следующем примере демонстрируется правильное и неправильное назначение cценария обработчика:

pascal/<INPUT TYPE="BUTTON" NAME="btnPress" VALUE="Нажми меня" onClick="btnClick();">pascal/ - в данном случае при нажатии кнопки, происходит выполнение функции btnClick;

pascal/<A HREF="help.htm" onReset="lnkClick();">Помощь</A>pascal/ - в данном случае вы не дождетесь выполнения функции lnkClick, поскольку элемент документа - ссылка, никогда не породит событие onReset;

Как внедрять сценарии в документы мы разобрали, но не менее важный вопрос ( по жизни ) КУДА, вернее в какое место документа ?

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

Правила таковы:

  • Код сценария <SCRIPT>...</SCRIPT> в теле HTML-документа. В данном случае сценарий выполняется броузером при загрузке документа, и результаты его работы ( если они есть ) отображаются в окне броузера при открытии документа ( надеюсь вы понимаете что, функции помещенные в тело HTML-документа не выполняются, если не указан их вызов );

  • Код сценария <SCRIPT>...</SCRIPT> в заголовке HTML-документа. В данном случае сценарии не выполняются броузером при загрузке документа. В заголовке обычно размещают различные служебные функции которые вызываются при обработки событий и из других сценариев размещенных в теле документа;

Приведу пример:

pascal/<HTML>
<HEAD>
<TITLE>Куда внедрить сценарий имеет значение !</TITLE>
<SCRIPT TYPE="text/javascript">
/* код функции Javascript */
function HelloUser(txtName) {
alert("Привет пользователю " + txtName);
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR ="SILVER", TEXT="BLACK", LINK="BLUE", ALINK="RED", VLINK="NAVY">
<SCRIPT TYPE="text/javascript">
/* код исполняемого при загрузке сценария */
document.write("<H2>Вежливая страница</H2>");
</SCRIPT>
<FORM NAME="form1">
<p>Введите имя: <INPUT TYPE="TEXT" LENGTH="25" NAME="usnam">
<!-- а этой кнопке назначен обработчик события -->
<p><INPUT TYPE="BUTTON" NAME="btnPress" VALUE="Привет документу"
onClick="HelloUser(document.form1.usnam.value);">
</FORM>
</BODY>
</HTML>
pascal/

В вышеприведенном примере ( рекомендую скопировать, сохранить как файл-htm и проверить ), продемонстрированы все три варианта размещения сценариев в HTML-документе: в заголовке размещаются служебные функции, в теле документа размещается исполняемый при загрузке код, а элементу формы - кнопка, назначен обработчик события - onClick. Обратите внимание на комментарии в документе, в коде сценария используется синтаксис языка разработки сценария, а в документе синтаксис HTML.

Старые броузеры и сценарии

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

Для скрытия сценария данным способом применяется комбинация комментариев HTML и комментариев языка разработки сценария. Старый броузер обнаружит неизвестный тег <SCRIPT>, пропустит его и обнаружит тег HTML - начало комментария, а далее исключит из обработки фрагмент документа до тега HTML, закрывающего комментарий. Современные броузеры "обучены" данному трюку и не обратят на него внимания, но перед закрывающим тегом комментария HTML надо поставить комментарий языка разработки сценария, для исключения данного фрагмента из интерпретации броузером.

Примеры:

<SCRIPT TYPE="text/javascript">
<!--
alert("Трам Пам Пам");
// -->
</SCRIPT>

pascal/<SCRIPT TYPE="text/vbscript">
<!--
Alert "Трам Пам Пам"
' -->
</SCRIPT>pascal/

pascal/
pascal/ Примеры и рекомендации по использованию сценариев В начале данного раздела мы рассмотрели основную область применения сценариев в документах, теперь посмотрим как это реализуется на практике.

Пример 10. Определение Web-броузера клиента.

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


pascal/<HTML>
<HEAD>
<TITLE>Сведени о броузере</TITLE>
</HEAD>
<BODY BGCOLOR ="SILVER", TEXT="BLACK", LINK="BLUE", ALINK="RED", VLINK="NAVY">
<h1>Для навигации в Web вы используете:</h1>
<hr>
<ul>
<SCRIPT TYPE="text/javascript">
document.write("<li>Имя программы: <b>"+navigator.appName+"  ");
document.write("<li>Версия: <b>"+navigator.appVersion+"  ");
document.write("<li>Пользовательский агент: <b>"+navigator.userAgent+"  ");
document.write("<li>Платформа: <b>"+navigator.platform+"  ");
</SCRIPT>
</ul>
<hr>
</BODY>
</HEAD></HTML>pascal/

Пример 11. Элементы DHTML в документах.

Документы DHTML содержат сценарии, позволяющие изменять свойства CSS ( видимость, оформление и даже содержание ) элементов документа, в зависимости от действий пользователя. При использовании в сценариях свойств CSS элементов документа , необходимо знать правила преобразования имени свойства CSS к имени свойства JavaScript: из имени свойства удаляются все тире, а каждый символ имени свойства после тире заменяется на прописной символ. Например: border-color преобразуется в borderColor, а font-size в fontSize;


pascal/<HTML>
<HEAD>
<TITLE>Элементы DHTML в документах</TITLE>
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
<SCRIPT TYPE="text/javascript">
// определение броузера
function isMSIE() {
if (navigator.appName == "Microsoft Internet Explorer") return true;
else return false;
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR ="WHITE", TEXT="BLACK", LINK="BLUE", ALINK="RED", VLINK="NAVY">
<H1 ALIGN=CENTER>Демонстрация элементов DHTML в документе</H1>
<HR>
<H2>Динамические слои</H2>
<p>Управляя свойствами слоев из сценариев можно реализовать массу динамических элементов (<i>раскрывающиеся меню и списки, изменющиеся рисунки, дополнительные поля форм и т.д.</i>):
<p>Например вот так:
<FORM NAME="family">
<p><b>На кого глядеть будем ? 
<p><INPUT TYPE="radio" NAME="HorW" VALUE="H" CHECKED
onClick = "if ( isMSIE() ) document.all.husb.style.visibility = '';
else document.layer[1].visibility = '';"> Я
<p><INPUT TYPE="radio" NAME="HorW" VALUE="W"
onClick = "if ( isMSIE() ) document.all.husb.style.visibility = 'hidden';
else document.layer[1].visibility='hidden';"> Жена
</FORM>
<IMG ID="wife" SRC="girl1.gif" BORDER=0 ALT="Лицо" STYLE="position:absolute; top:260; left:150">
<IMG ID="husb" SRC="boy2.gif" BORDER=0 ALT="Морда" STYLE="position:absolute; top:260; left:150">
<HR>
<H2>Динамические ссылки</H2>
<p>Обрабатывая различные события можно динамически изменять стиль ссылок (<i>проще это реализовать через псевдоклассы в таблице стилей</i>):
<p><b>В MSIE можно слелать так:    Заходи сюда - не пожалеешь
<A href="#"
onMouseOver = "if ( isMSIE() ) this.style.textTransform='uppercase';"
onMouseOut = "if ( isMSIE() ) this.style.textTransform='none';"
onClick = "alert('Извиняйте, это лишь пример !');">Горячо !!!</A>
<p><b>Или даже вот так :    Заходи сюда - не пожалеешь
<A href="#"
onMouseOver = "if ( isMSIE() ) this.innerText='НУ ОЧЕНЬ УЖ ГОРЯЧО !';"
onMouseOut = "if ( isMSIE() ) this.innerText='Горячо !!!';"
onClick = "alert('Извиняйте, это лишь пример !');">Горячо !!!</A>
<p><b>Графические ссылки можно оформить так:    Заходи сюда - не пожалеешь
<A href="#"><IMG src="hot.gif" align="middle" border=0
onMouseOver = "this.src='ahot.gif';"
onMouseOut = "this.src='hot.gif';"
onClick = "alert('Извиняйте, это лишь пример !');"></A>
<HR>
<H2>Динамические подсказки</H2>
<p>В статусной строке броузера можно выводить подсказки об выделенных в текущий момент элементах документа:
<p><b>Например описание ссылки:  
<a href="#"
onMouseOver = "window.status='Переход на узел WWW.SITE.RU где ...'; return true;"
onMouseOut = "window.status=''; return true;">Ссылка с подсказкой</a>
<p><b>Или описание рисунка:  
<IMG SRC="boy2.gif" BORDER=0 ALIGN="MIDDLE"
onMouseOver = "window.status='Раньше я выглдел гораздо лучше !'; return true;"
onMouseOut = "window.status=''; return true;">
<HR>
</BODY>
</HTML>
pascal/


Пример 12. Элементы анимации в документах.

Анимация основана на изменении средствами сценария, таких свойств CSS элементов, как видимость, размер и положение элемента ( как правило слоев документа ).


<HTML>
<HEAD>
<TITLE>Анимация в документах !</TITLE>
<SCRIPT TYPE="text/javascript">

  pascal/var pos1 = 0;
var pos2 = 0;
var speed1 = Math.floor(Math.random() * 10)+25;
var speed2 = Math.floor(Math.random() * 10)+25;
function ctrlRun() {
 pos1 = (pos1 > 600) ? 0 : pos1 + speed1;
 pos2 = (pos2 > 600) ? 0 : pos2 + speed2;
 switch(navigator.appName) {
  case "Netscape":                    // броузер NN
     document.layers[0].left = pos1;
     document.layers[1].left = pos2;
     window.setTimeout("ctrlRun()", 250);
     break;
  case "Microsoft Internet Explorer": // броузер MSIE
     document.all.men.style.left = pos1;
     document.all.wom.style.left = pos2;
     window.setTimeout("ctrlRun()", 250);
     break;
  default:
     window.alert("На чем вы работаете ?");
 }
}
pascal/

pascal/</SCRIPT>
</HEAD>
<BODY BGCOLOR ="BLACK", TEXT="WHITE", LINK="WHITE", ALINK="RED", VLINK="SILVER">
<h2>Кто быстрее: бегун или бегунья ?</h2>
<IMG ID="men" SRC="people1.gif" BORDER=0 STYLE="position:absolute; top:150; left:0">
<IMG ID="wom" SRC="people2.gif" BORDER=0 STYLE="position:absolute; top:300; left:0">
<FORM NAME="form1">
<INPUT TYPE="BUTTON" NAME="btnStep" VALUE="Старт-Бегунов" onClick="ctrlRun();">
</FORM>
</BODY>
</HTML>
pascal/


Пример 13. Обработка данных из форм.

Предварительная обработка данных из форм, позволяет сократить кол-во обменов данными с сервером, за счет выявления типовых ошибок пользователей, на этапе заполнения формы ( неверные даты, пустые поля и др. ).


<HTML>
<HEAD>
<TITLE>Проверка данных в формах</TITLE>
<SCRIPT TYPE="text/javascript">

  pascal/function valid() {
   if (document.form1.fio.value.length < 5) {
      window.alert("Введите имя !");
      return false;
   }
   if (document.form1.tel.value.length < 3) {
      window.alert("Введите телефон !");
      return false;
   }
   if (document.form1.edu.value.length < 10) {
      window.alert("Заполните сведения об образовании !");
      return false;
   }
return true;
}
pascal/

pascal/</SCRIPT>
</HEAD>
<BODY BGCOLOR ="WHITE", TEXT="BLACK", LINK="BLUE", ALINK="RED", VLINK="NAVY">
<H1 ALIGN=CENTER>Заполните пожалуйста данные</H1>
<HR>
<FORM NAME="form1" ACTION="mailto:lst@user.ru" onSubmit = "return valid();">
<table width=100% align=center>
<col width=35% align=left valign=top>
<col align=left valign=top>
<tr>
<th>Введите ваше ФИО:
<td>
<INPUT TYPE="text" NAME="fio" SIZE=30 MAXLENGTH=40>
<tr>
<th>Введите телефон:
<td>
<INPUT TYPE="text" NAME="tel" SIZE=9 MAXLENGTH=9>
<tr>
<th>Сведения об образовании:
<td>
<TEXTAREA NAME="edu" TITLE="Образование" ROWS=5 COLS=30>
</TEXTAREA>
</table>
<p align=center><INPUT TYPE="reset" NAME="but2" VALUE="Очистить форму">
<INPUT TYPE="submit" NAME="but3" VALUE="Отправка данных">
</FORM>
<HR>
</BODY>
</HTML>
pascal/


Пример 14. Управление окнами броузера.

Для управления окнами броузера средствами сценария используются методы JavaScript: window.open() и window.close().


pascal/<HTML>
<HEAD>
<TITLE>Работа с окнами в JavaScript</TITLE>
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
</HEAD> <BODY BGCOLOR ="WHITE", TEXT="BLACK", LINK="BLUE", ALINK="RED", VLINK="NAVY">
<H1 ALIGN=CENTER>Управление окнами броузера из сценария</H1>
<HR>
<FORM NAME="form1">
<p><INPUT TYPE="button" NAME="open" VALUE="Открыть окно"
onClick="newWin=window.open('','newWin','toolbar=no, status=no, width=250, height=250');">
<p><INPUT TYPE="button" NAME="close" VALUE="Закрыть окно"
onClick="newWin.close();">
</FORM>
<HR>
<p>Для загрузки данных в созданное окно необходимо передать URL загружаемого ресурса, как первый параметр метода - <b>open   (<i>в нашем примере он пустой</i>).
</BODY>
</HTML> pascal/


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

Для получения дополнительной информации по данной теме рекомендую вам посетить сайты по следующим ссылкам:

  • JavaScript от CITFORUM - раздел на сайте центра информационных технологий, посвященный JavaScript, содержит описание языка, примеры и рекомендации по разработке сценариев;

  • VBscript от CITFORUM - раздел на сайте центра информационных технологий, посвященный VBscript, содержит описание языка, примеры и рекомендации по разработки сценариев;

 

   
::  

::


Rambler's Top100 Крапивна
 

(с)2005-2006 Web studio SEDUVAN