- •1. Основні поняття
- •1.1. Сім варіацій на тему "Hello, world! "
- •1.1.1. Варіація перша: сама проста
- •1.1.2. Варіація друга: із секретним вихідним текстом
- •1.1.3. Варіація третя: із переменной і функціями
- •1.1.4. Варіація четверта: створення сторінки "на літу"
- •1.1.5. Варіація п'ята: із діалоговою панеллю
- •1.1.6. Варіація шоста: опрацювання події
- •1.1.7. Варіація сьома: із визначенням типу браузера
- •1.2. Перемінні в JavaScript
- •1.2.1. Оголошення перемінних
- •1.2.2. Присвоєння значення перемінним
- •1.2.3. Типи даних
- •1.2.4. Перетворення типів даних
- •1.3. Оператори мови JavaScript
- •1.3.1. Унарные оператори
- •1.3.2. Бинарные оператори
- •1.3.3. Оператори для роботи з окремими бітами
- •1.3.4. Оператори зсуву
- •1.3.5. Оператори відношення
- •1.3.6. Логічні оператори
- •1.3.7. Оператор присвоювання
- •1.3.8. Умовні оператори
- •1.3.9. Оператори циклу
- •1.3.10. Інші оператори
- •1.3.11. Старшинство операторів JavaScript
- •1.3.12. Функції в мові сценаріїв JavaScript
- •1.4. Приклади використання операторів циклу
- •2. Класи і об'єкти
- •2.1. Три типи об'єктів «JavaScript
- •2.1.1. Умонтовані об'єкти
- •2.1.2. Об'єкти браузера
- •2.1.3. Об'єкти на базі класів, утворюваних програмістом
- •2.2. Масиви в JavaScript
- •2.3.1. Властивості об'єкта window
- •2.3.2. Методи об'єкта window
- •2.4. Сценарії, що працюють з об'єктами window
- •2.4.1. Як закрити вікно браузера
- •2.4.2. Открываем нове окно
- •2.4.3. Текст , що біжить , у рядку стани браузера
- •2.4.4. Обмеження часу реакції користувача
- •2.4.5. Завантаження документа html у вікно браузера
- •2.5.1. Властивості об'єкта document
- •2.5.2. Методи об'єкта document
- •2.5.3. Колірне оформлення документа
- •2.5.4. Посилання і мітки в документі
- •2.6. Умонтований клас Math
- •2.6.1. Властивості
- •2.6.2. Методи
- •2.7. Умонтований клас Date
- •2.7.1. Конструктори класу Date
- •2.8. Умонтовані функції
- •2.9. Плавна зміна цвіту фона документа html
- •3. Робота з формами
- •3.1. Ієрархія об'єктів у формах
- •3.2. Форма і її властивості
- •3.2.2. Властивості об'єкта form
- •3.3. Об'єкти, що входять до складу форм
- •3.3.1. Кнопка button
- •3.3.2. Перемикач checkbox
- •3.3.3. Перемикач radio
- •3.3.4. Приклад форми з перемикачами
- •3.3.5. Список select
- •3.3.6. Приклади сценаріїв, що працюють із списками
- •3.3.7. Однострочное поле text
- •3.3.8. Перевірка анкети
- •3.3.9. Многострочное поле textarea
- •3.3.10. Приклад сценарію, що заповнює поле textarea
- •3.3.11. Однострочное поле password
- •3.3.12. Запровадження ідентифікатора і пароля
- •3.4. Перевірка заповнення форми
- •3.5. Шестнадцатеричный калькулятор
- •3.3.6. Електронні часи
- •4. Фреймы
- •4.1. Файл опису фреймов
- •4.2. Взаємодія між фреймами
- •4.2.1. Десятично-шестнадцатеричный перетворювач
- •4.2.2. Відображення декількох документів html
- •5. Растровые зображення
- •5.1. Растровое зображення як об'єкт
- •5.2. Динамічна заміна растровых зображень
- •5.2.1. Зміна зовнішнього вигляду графічних посилань
- •5.2.2. Створення анімаційних зображень
- •5.2.3. Чекання завантаження всіх зображень
- •6. Взаємодія з аплетами java
- •6.1. Вбудовування аплета Java у документ html
- •6.2. Виклик методів аплета Java із сценарію JavaScript
- •6.3. Доступ до полів аплета Java із сценарію JavaScript
- •6.4. Динамічне завантаження аплетов Java
- •7. Застосування cookie
- •7.1. Виконання основних операцій із cookie
- •7.1.1. Створення cookie
- •7.1.2. Одержання значення cookie
- •7.1.3. Зміна значення параметра cookie
- •7.1.4. Видалення cookie
- •7.1.5. Обмеження на використання cookie
- •7.2. Декілька прикладів використання cookie
- •7.2.1. Фіксація повторних провідин сторінки
- •7.2.2. Записна книжка Cookies Notepad
- •7.2.3. Настроювання параметрів документа html
- •7.2.5. Одержання cookie розширенням серверу Web
- •7.2.6. Лічильник провідин на базі cookie і програми cgi
- •7.3. Настроювання браузера для роботи з cookie
7. Застосування cookie
Сookie являє собою властивість документа HTML. Дані cookie фізично зберігаються локально на комп'ютері користувача, що завантажив до себе цей документ, у виді спеціального системного файла. За допомогою cookie користувач може настроїти, або "приготувати" по власному смаку, документ HIML, якщо для нього передбачене таке настроювання.
Простіше усього уявити собі cookie як набір строковых параметрів, кожний із який має ім'я і значення. Сценарій JavaScript може створити cookie для документа HTML, визначаючи в ньому довільна кількість параметрів і задаючи для них довільні значення. Після створення такий набір параметрів стає приналежністю даного конкретного документа HTML і може бути проаналізований, змінений або віддалений сценарієм JavaScript.
Як уже говорилося, основне, для чого потрібно cookie, - це дати користувачу можливість настроїти під свої потреби інтерфейс активних документів HTML. Ці настроювання можуть аналізуватися або не аналізуватися сервером Web, але в будь-якому випадку вони зберігаються в користувача. Настроювання, зрозуміло, пропадуть, якщо користувач, скажемо, отформатирует свій жорсткий диск. Після цього параметри що настроюється документа HTML прийдеться задавати наново.
Звичайно, задачу індивідуального настроювання параметрів сторінок можна було б вирішити й іншими засобами, наприклад, за допомогою розширень серверу Web, таких, як програми CGI або додатки ISAPI. Для цього на сервері Web повинна бути встановлена база даних, що береже настроювання для всіх зареєстрованих у ній користувачів.
У цьому випадку розширення серверу Web може динамічно створювати настраиваемые документи HTML, використовуючи для визначення зовнішнього вигляду сторінок параметри, що зберігаються в базі даних.
Наявність бази даних настроювання користувачів ускладнює супровід серверу Web, і тому неприйнятно в багатьох випадках. Наприклад, якщо сервер Web виртуальный і розташований на дисках серверу якогось провайдера Internet, створення бази даних може перетворитися труднопреодолимую проблему.
Покладання на користувальний браузер задачі збереження настроювань окремих документів HTML сильно спрощує задачу організації настроювання діалогового інтерфейсу. А для цього саме потрібні cookie і сценарії JavaScript.
Ще одне практичне застосування cookie - збереження товару, обране відвідувачем серверу Web, що виконує роль виртуального магазина. Покупець може вибирати різний товар на різних сторінках серверу, при цьому повне замовлення може спочатку бути сформований і збережений у cookie, а потім по явному запиті користувача відправлений на сервер.
Серед інших застосувань cookie можна відзначити мережні ігри. Можна, наприклад, берегти в cookie поточний стан гри або інші параметри.
7.1. Виконання основних операцій із cookie
Основні операції з cookie - створення cookie, одержання і зміна значень параметрів cookies, а також видалення cookie.
7.1.1. Створення cookie
Існує два засоби створення cookie, перший із який використовується розширеннями серверу Web, а другий - сценаріями JavaScript.
Перший засіб: створення cookie розширенням серверу Web
Для того щоб створити cookie першим засобом, розширення серверу Web звичайно добавляє в заголовок HTTP динамічно утворюваного документа HTML поле з ім'ям Set-Cookie. У цьому полі визначаються імена і значення параметрів cookie.
Коли розширення серверу Web визивається з документа HTML, що має cookie, параметри cookie передаються цьому розширенню через поле Cookie заголовка HTTP і можуть бути проаналізовані.
Заголовок HTTP, призначений для створення cookie, виглядає в такий спосіб:
Set-Cookie: Ім'я=3начение; ехрirеs=Дата_GMT;
path=Anpec_URL; dоmain=Домен; secure
Опис окремих полів заголовка Set-Cookie приведено нижче:
Поле Описание
Ім'я Довільне ім'я параметра, визначеного в cookie. Тут ви можете використовувати будь-який рядок, аби в ній не було прогалин, ком і двоеточий. У тому випадку, коли ім'я повинно містити перераховані вище символи, використовуйте кодировку URL
Значення Текстовий рядок значень параметрів. У цьому рядку не повинно бути прогалин, ком і двоеточий, тому ви повинні використовувати для неї кодировку URL
Expires Дата автоматичного видалення cookie за Гринвічем. Якщо ця дата не зазначена, а параметр expires відсутніх, cookie буде віддалено відразу після того, як браузер закінчить сеанс зв'язку із сервером Web
Domain Доменна частина адреси URL, для якого діє дане cookie. якщо цей параметр не зазначений, те по умовчанню використовується доменна адреса URL документа HTML, де було встановлено cookie
Path Частина адреси URL, що задає шлях до документа HTML, для якого діє дане cookie. Якщо цей параметр не зазначений, те по умовчанню використовується адреса URL документа HTML, де було встановлено cookie
Secure Якщо зазначене це поле, дані cookie необхідно передавати тільки з використанням захищеного протоколу SSL. Такий протокол використовується серверами HTTPS
Всі поля, крім перших двох (Ім'я і Значення), необов'язкові. Дата повинна бути записана у форматі День_тижні, ДД-Мес-ГГ ЧЧ:ММ:СС GMT, де:
День_тижні - англійське трехбуквенное скорочення назви дня тижня наприклад, Моn);
ДД - номер дня тижня;
Мес - англійське трехбуквенное скорочення назви місяця (наприклад, Jun);
ГГ - дві останні цифри року;
ЧЧ - часи;
MM - хвилини;
СС - секунди.
Наприклад, дата може бути зазначена так:
Mon 07-Jun-93 14:45:00 GMT
Робимо невеличке зауваження щодо поляж domain і path, що визначають умову, при якому виконується установка cookie. Коли браузер завантажує документ HTML із серверу Web і серед заголовків HTTP цього документа є присутнім заголовок Set-Cookie, він перевіряє можливість установки cookie. У процесі перевірки аналізується адреса URL, відкіля був завантажений цей документ, а також уміст поляж domain і path.
Якщо ці поля не зазначені, те по умовчанню рахується, що вони відповідають адресі URL, по якому знаходиться завантажений документ НТML У цьому випадку виконується установка cookie.
У тому випадку, коли зазначене поле domain, установка cookie виконується тільки тоді, коли документ був завантажений із серверу Web, що належить даному домену.
За допомогою параметра path можна встановити обмеження на адреси URL у рамках домена, для яких виконується установка cookie. Значення "/" відповідає всім адресам даного домена.
Одночасно сервер Web може створити декілька параметрів cookie, включивши в заголовок документа HTML декілька заголовків Set-Cookie.
Другий засіб: створення cookie у сценарії JavaScript
Другий засіб припускає використання властивості document.cookie. Ця властивість згадана при розповіді про властивості і методи об'єкта document, утворюваного для документа HTML, завантаженого у вікно браузера.
У загальному виді сценарій JavaScript може створити cookie у такий спосіб:
document. cookie = "Ім'я=Значення";
Тут просто записується у властивість cookie об'єкта document текстовий рядок, що визначає cookie.
Для перерахунку поточної дати у формат GMT у сценаріях JavaScript можна використовувати умонтовані функції, про що буде розказано.
Як приклад можна призвести вихідний текст функції addCookie, що буде використовуватися у своїх сценаріях для створення cookie:
function addCookie(szName, szValue, dtDaysExpires)
{
var dtExpires = new Date();
var dtExpiryDate = "";
dtExpires. setTime(dtExpires. getTime() + dtDaysExpires * 24 * 60 * 60 * 1000);
dtExpiryDate = dtExpires. toGKTString();
}
Функція addCookic одержує три параметри.
Через параметр szName передається ім'я параметра, що зберігається в сookie. Параметр szValue визначає значення цього параметра cookie. Що ж стосується останнього параметра з ім'ям dtDaysExpires, те він задає інтервал часу стосовно моменту створення cookie, коли це cookie необхідно видалити.
Саме складне у функції addCookie - це визначення дати видалення cookie і перетворення цієї дати у формат GMT. Дана задача вирішується в такий спосіб.
Насамперед функція addCookie створює об'єкт класу Date за допомогою ключового слова new:
var dtExpires = new Date();
Записана в такий спосіб у перемінну dtExpires дата відповідає моменту виклику функції addCookie.
Далі за допомогою методу getTime функція addCookie визначає поточну дату в миллисекундах і додає до результату значення параметра dtDaysExpires, отримане функцією, помножене на константу (24 * 60 * 60 * 1000):
dtExpires. getTime () + dtDaysExpires * 24 * 60 * 60 * 1000
Константа являє собою кількість часів у добі, помножена на кількість промайнуть у часі, потім на кількість секунд у хвилині і, нарешті, на кількість миллисекунд у секунді.
Результат обчислень записується за допомогою методу setTime у перемінну dtExpires. Тепер тут зберігається дата автоматичного знищення cookie браузером. Залишилося лише перетворити цю дату у формат GMT. Таке перетворення неважко зробити за допомогою спеціально призначеного для цього методу toGMTString, що повертає текстовий рядок у потрібному нам форматі:
dtExpiryDate = dtExpires. toGMTString();
Тепер залишається тільки сформувати текстовий рядок визначення cookie і записати її у властивість document. cookie:
document. cookie = szName + "=" + szValue + "; expires=" + dtExpiryDate;
На цьому створення cookie завершено.
Тепер, коли є функція addCookie, створення cookie являє собою дуже просту задачу. Наприклад, у такому рядку буде створена cookie з ім'ям Count, значенням 0, причому через 10 днів браузер автоматично видалить це cookie:
addCookie("Count","0",10);
При необхідності використання інших параметрів cookie, таких, як path або domain, можна трохи доповнити текст функції addCookie.
