Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи мови JavaScript.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.04 Mб
Скачать

2.4.4. Обмеження часу реакції користувача

Іноді користувач, попавши на сторінку Web, довго не може зрозуміти, що потрібно робити. Можна створити сценарій, що відображає в цій ситуації документ HTML із подсказкой. Зрозуміло, підсказування повинне відображатися тільки в тому випадку, якщо користувач не виконує над сторінкою ніяких дій протягом достатньо тривалого часу.

Для виміру час, протягом якого користувач неактивний, допоможуть методи setTimeout і clearTimeout. Перший із цих методів уже використовувався в попередньому сценарії для організації періодичного виконання функції.

Коли користувач завантажує документ HTML, вихідний текст якого поданий у листинге 2.6, на екрані з'являється форма з полемо, призначеним для запровадження текстового рядка пароля.

Відразу після завантаження документа у вікно браузера сценарій запускає таймер, викликаючи метод setTimeout із цього ж класу. Таймер установлюється на 10 с. Саме за цей час треба ввести пароль і натиснути кнопку Enter Password у формі, показаної на мал. 2.13, щоб одержати доступ до сторінки.

Якщо почекати з запровадженням пароля або ввести неправильний пароль, сценарій завантажує у вікно браузера динамічно сформований документ HTML із повідомленням про заборону доступу.

Тільки в тому випадку, якщо пароль уведений правильно і протягом 10 із, на екрані з'являється повідомлення про надання користувачу доступу і посилання, за допомогою якої можна перейти до перегляду головної сторінки нашого серверу Web.

Тепер роздивимося вихідний текст сценарію JavaScript, умонтованого в документ HTML (листинг 2.6).

Листинг 2.6. Файл chapter2/Password/Password. html

<HTML>

<HEAD>

<ПОЗНАЧКА http-equiv="Content-Type"

content="text/html; charset=windows-1251">

<title>bвод пароля</Т1ТLЕ>

<SCRIPT LANGUAGE="JavaScript">

<!--

var idTimer=0;

function StartMyTimer()

{

var cmd="NoAccess ()";

idTimer=window.setTimeout(cmd, 10000);

}

function NoAccess()

{

document.write("<Н1>Доступ заборонений</Н1>") ;

document.write("<Р>Спробуйте наступного разу!");

}

function CheckPassowd()

{

var szPwd="";

szPwd=document.pwdForm.pwd.value;

if(szPwd=="password")

{

clearTimeout(idTimer);

document.write("<Н1>Доступ дозволений</Н1>");

document.write("<Р>Наш сервер:");

document.write('<A HREF="http://www.glasnet.ru/~frolov/index.html" ');

document.write('>http://www.glasnet.ru/~frolov/index.html</A>');

}

else

{

document.write("<Н1>Доступ заборонений</Н1>");

document.write("<Р>Спробуйте наступного разу!");

}

}

//-->

</SCRIPT>

</HEAD>

<BODY BGCOLOR=white onLoad="StartMyTimer();">

<Н1>Доступ обмежений</Н1>

<P>Ми обмежили доступ до нашого серверу:)

<Р>Ви повинні ввести пароль (слово password) протягом 10 с.

<HR>

<FORM NAME="pwdForm">

<P><INPUT TYPE="text" VALUE="******" NAME="pwd">

<P><INPUT TYPE="button" VALUE="Enter Password" оnC1ick="CheckPassowd();">

</FORM>

<HR>

</BODY>

</HTML>

У першій сторінці заголовка зазначений за допомогою оператора <ПОЗНАЧКА> номер кодової сторінки 1251, що відповідає кирилиці в Windows:

<ПОЗНАЧКА http-equiv="Content-Type"

content="text/html; charset=windows-1251">

Без цього рядка документ відображався неправильно браузером Microsoft Internet Explorer версії 4.0.

У перших рядках сценарію, розташованого в заголовку документа, оголошена перемінна idTimer і визначена функція StartMyTimer:

var idTimer=0;

function StartMyTimer()

{

var cmd="NoAccess()";

idTimer=window. setTimeout(cmd, 10000);

}

Функція StartMyTimer запускає таймер, зберігаючи його ідентифікатор у глобальної перемінної idTimer. Для запуску таймера застосований знайомий метод з ім'ям setTimeout.

Коли таймер спрацює (а це відбудеться через 10 секунд після завантаження документа HTML у вікно браузера), буде викликана функція NoAccess. Ця функція виводить у вікно браузера повідомлення про заборону доступу до сторінки.

Для того щоб функція StartMyTimer запускалась відразу після завантаження документа HTML у вікно браузера, зазначене її ім'я в параметрі onLoad оператора <BODY> і організована в такий спосіб опрацювання відповідної події:

<BODY BGCOLOR=white onLoad="StartMyTimer();">

Якщо користувач завантажив документ і просто дивиться на нього, через 10 секунд уміст документа у вікні браузера буде перезаписано функцією NoAccess.

Для запровадження пароля необхідно використовувати форму, що визначена в документі HTML у такий спосіб:

<FORM MAME="pwdForm">

<P><INPUT TYPE="text" VALUE="******" NAME="pwd">

<P><INPUT TYPE="button" VALUE="Enter Password"

onClick="CheckPassowd();">

</FORM>

Ім'я форми pwdForm зазначено в параметрі NAME оператора <FORM>. Це ім'я буде потрібно для витягу рядка пароля з текстового поля, визначеного у формі за допомогою оператора <INPUT>. Ім'я цього текстового поля pwd також задається параметром NAME.

Крім текстового поля у формі є кнопка з написом "Еnter Password". Для цієї кнопки визначений оброблювач події onClick, що визивається, коли користувач натискає мишею на кнопку. Оброблювачем у даному випадку є функція CheckPassowd, визначена в сценарії. Ця функція перевіряє пароль і, якщо пароль уведений правильно, зупиняє таймер, запущений при завантаженні документа HTML.

Витяг рядка пароля з поля форми робиться в такий спосіб:

var szPwd="";

szPwd=document. pwdForm. pwd. value;

Тут виконується посилання на властивість value об'єкта pwd, яким є текстове поле форми (пригадаєте, що це поле називається pwd). Об'єкт pwd знаходиться усередині форми з ім'ям pwdForm, що, у свою чергу, розташовується в документі HTML, завантаженому у вікно браузера. Цим документом є об'єкт document.

Отримавши введену користувачем рядок, функція CheckPassowd перевіряє її:

if(szPwd=="password")

{

clearTimeout(idTimer);

...

}

Якщо рядок уведений правильно, таймер зупиняється методом clearTimeout. У якості параметра цьому методу передається ідентифікатор таймера, отриманий від методу setTimeout. При помилці в документ HTML записується повідомлення про заборону доступу.