Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000182.doc
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
731.14 Кб
Скачать

Управление процессами во времени

Для организации периодического (через заданный интервал времени) выполнения некоторого выражения или функции служит метод setInterval() объекта window. Этот метод имеет следующий синтаксис:

setInterval(выражение, период [, язык])

Первый параметр — строкa, содержащая выражение (вызов функции). Второй параметр — целое число, указывающее временную задержку в миллисекундах перед последующими выполнениями выражения. Третий, необязательный параметр указывает язык, на котором написано выражение; по умолчанию — JavaScript.

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

Пусть, например, требуется, чтобы некоторая функция myfunc() выполнялась периодически через 0,5 с. Тогда в сценарии следует записать следующее выражение:

setInterval("myfunc()", 500)

В следующем примере показано, как передать методу setInterval() функцию с двумя параметрами, paraml и param2, значения которых определены в другом месте сценария:

var xstr = "myfunc(" + paraml + "," + param2 + " ) "

setInterval(xstr, 500)

Остановка запущенного временного процесса:

var myproc = setInterval("myfunc()", 100)

If (confirm("Прервать процесс ?"))

clearInterval (myproc)

Чтобы выполнить выражение с некоторой временной задержкой, используется метод setTimeout(). Этот метод объекта window имеет следующий синтаксис:

setTimeout(выражение, задержка[, язык])

Метод setTimeout() возвращает целое число — идентификатор временного интервала, который может быть использован в дальнейшем для отмены задержки выполнения (метод clearTimeout()).

Запуск функции myfunc() спустя 1 с:

setTimeout("myfunc()", 1000)

Работа с Cookie

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

Данные в cookie-файлах организованы в виде записей.

Функция writeCookie() позволяет создать или обновить cookie-запись:

function writeCookie(name, value, expires, path, domain, secure){

/* запись cookie */

document.cookie =

name + "=" + escape(value) +

((expires) ? ":expires=" + expires.toGMTString() : "") +

((path) ? ":path=" + path : "") +

((domain) ? ":domain=" + domain : "") +

((secure) ? ":secure" : "")

}

Запись данных в cookie-файл заключается в присвоении строки, содержащей cookie-данные, свойству document.cookie. Запись непосредственно в файл выполняется при завершении работы браузера.

Эта функция принимает следующие параметры:

name — строка, содержащая имя cookie-записи (обязательный параметр);

value — строка, содержащая значение cookie (обязательный параметр);

expires —срок хранения cookie-записи (объект Date); если отсутствует, то после завершения работы браузера cookie-запись удаляется;

path — строка, содержащая путь cookie-записи; если не указан, то используется путь вызванного документа (текущая папка на сайте);

domain — строка, содержащая домен нужной cookie-записи (имя хоста сервера, например, rambler.ru); если не указан, то используется домен вызванного документа;

secure — логическое значение, определяющее необходимость использования безопасного HTTP-соединения (HTTPS). Если атрибут secure не установлен, cookie-информация может передаваться через любое соединение.

Если две и более cookie-записи (до 20) соответствуют одному и тому же домену, то в JavaScript они все равно представляются одной строкой и разграничиваются точкой с запятой и пробелом.

Рассмотрим функцию readCookie(name), читающую cookie-данные, соответствующие имени записи name, которое передается этой функции в качестве параметра:

function readCookie(name) { //чтение cookie-данных

var xname = name + "="

var xlen = xname.length

var den = document.cookie.length

var i = О

while(i < xlen){

var j = i + xlen

if (document.cookie.substring(i, j) == xname)

return getCookieVal(j)

i = document.cookie.indexOf(" ",1) + 1

if (i == 0) break

}

return null

}

Параметры функции substring — позиции начала и конца подстроки.

Функция readCookie(name) возвращает значение cookie-записи с именем name либо возвращает null, если такая запись не найдена. В теле этой функции использована еще одна, вспомогательная функция getCookieVal(j), возвращающая декодированное значение cookie-данных. Декодирование производится с помощью встроенной функции unescape(), поскольку cookie-запись должна представлять собой кодированную строку, полученную путем обработки встроенной функцией escape(). Код этой функции приведен ниже:

function getCookieVal(n) {

/* вспомогательная функция, вызываемая из readCookie() */

var endstr = document.cookie.indexOf(";", n)

if (endstr == -1)

endstr = document.cookie.length

return unescape(document.cookie.substring(n,

endstr))

}