Cookies — это небольшие текстовые файлы, которые веб-сервер сохраняет на устройстве пользователя для хранения информации о сессии, предпочтениях или других данных. В контексте библиотеки Intro.js cookies часто используются для запоминания того, проходил ли пользователь интерактивный тур или подсказку, чтобы при повторном посещении страницы не показывать её повторно.
Cookies состоят из пары ключ-значение и могут содержать дополнительные параметры:
expires — дата истечения срока
действия cookie.max-age — время жизни cookie в
секундах.path — путь на сайте, для которого
действует cookie.domain — домен, для которого cookie
действительно.secure — флаг, разрешающий передачу
cookie только по HTTPS.SameSite — политика доступа к cookie с
разных сайтов (Strict, Lax,
None).Пример простого cookie:
document.cookie = "introSeen=true; max-age=31536000; path=/";
Здесь устанавливается cookie introSeen со значением
true, срок действия — один год, доступен на всем сайте.
В JavaScript для чтения cookie используется
document.cookie, который возвращает строку вида:
"key1=value1; key2=value2; key3=value3"
Для удобного получения значения конкретного cookie часто применяют вспомогательные функции:
function getCookie(name) {
const cookies = document.cookie.split("; ");
for (let cookie of cookies) {
const [key, value] = cookie.split("=");
if (key === name) return decodeURIComponent(value);
}
return null;
}
const introSeen = getCookie("introSeen");
Эта функция ищет cookie по имени и возвращает его значение или
null, если cookie не найден.
Для удаления cookie его нужно переписать с пустым значением и истекшим сроком действия:
document.cookie = "introSeen=; max-age=0; path=/";
Это гарантирует, что cookie станет недействительным и браузер удалит его.
Intro.js позволяет управлять поведением туров с помощью cookies. Основная цель — запомнить, что пользователь уже прошёл тур, чтобы не повторять его при следующих визитах.
// Проверка, показывать ли тур
if (!getCookie("introSeen")) {
introJs().start();
document.cookie = "introSeen=true; max-age=31536000; path=/";
}
В этом примере:
introSeen.Можно расширить управление, сохраняя разные состояния туров:
function startTour(tourName) {
if (!getCookie(tourName)) {
introJs().start();
document.cookie = `${tourName}=true; max-age=31536000; path=/`;
}
}
startTour("homepageIntro");
startTour("settingsIntro");
Таким образом можно запускать несколько туров на одном сайте, независимо отслеживая, какие из них пользователь уже прошёл.
Secure для HTTPS-сайтов и
SameSite для защиты от CSRF.При изменении языка сайта или обновлении интерфейса можно хранить cookie с версией тура:
const tourVersion = "v2";
if (getCookie(`introSeen_${tourVersion}`) !== "true") {
introJs().start();
document.cookie = `introSeen_${tourVersion}=true; max-age=31536000; path=/`;
}
Это позволяет показывать обновлённые подсказки пользователям, которые уже проходили старые версии туров, не нарушая пользовательский опыт.
Для упрощения работы с cookies можно использовать небольшие библиотеки:
Cookies.set('introSeen', 'true', { expires: 365, path: '/' });
const seen = Cookies.get('introSeen');
Cookies.remove('introSeen');
Использование библиотек особенно полезно для поддержки кодировки
значений, совместимости с разными браузерами и управления атрибутами
cookie без ручного парсинга строки document.cookie.
Сочетание Intro.js с cookie позволяет создать персонализированный опыт пользователя: показывать интерактивные подсказки только при необходимости, управлять версиями туров, интегрировать локализацию и минимизировать навязчивость интерфейса. Эффективное управление cookie становится ключевым инструментом для улучшения взаимодействия с сайтом без дублирования информации или раздражения пользователей.