/
Coderdev
/
web-static-labs
Обзор
Документация
Войти
/
Coderdev
/
web-static-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
html/lab6/task2/script.js
1 строка
3 KB
Coderdev
1
30 мар 2026, 18:31
30 мар 2026, 18:31
020a8dd
Код
Авторство
О чём код?
"use strict";const COOKIE_NAME="lab6UserName",CONSENT_NAME="lab6CookieConsent",userNameInput=document.getElementById("userName"),cookieDaysSelect=document.getElementById("cookieDays"),saveBtn=document.getElementById("saveBtn"),declineBtn=document.getElementById("declineBtn"),removeBtn=document.getElementById("removeBtn"),statusEl=document.getElementById("status"),cookieBanner=document.getElementById("cookieBanner"),bannerDays=document.getElementById("bannerDays"),bannerAccept=document.getElementById("bannerAccept"),bannerDecline=document.getElementById("bannerDecline");saveBtn.addEventListener("click",saveCookieFromForm);declineBtn.addEventListener("click",declineCookies);removeBtn.addEventListener("click",removeCookies);bannerAccept.addEventListener("click",saveCookieFromBanner);bannerDecline.addEventListener("click",declineCookies);window.addEventListener("DOMContentLoaded",initPage);function initPage(){const consent=getCookie(CONSENT_NAME),savedName=getCookie(COOKIE_NAME);if(savedName){userNameInput.value=savedName;statusEl.textContent="Cookie с именем уже сохранена."}else if(consent==="declined"){statusEl.textContent="Пользователь отказался от хранения cookie."}else{cookieBanner.hidden=false;statusEl.textContent="Выберите действие для cookie."}}function saveCookieFromForm(){saveCookie(Number(cookieDaysSelect.value))}function saveCookieFromBanner(){const days=Number(bannerDays.value);cookieDaysSelect.value=String(days);saveCookie(days)}function saveCookie(days){const name=userNameInput.value.trim();if(!name){statusEl.textContent="Введите имя перед сохранением cookie.";return}const expires=getExpires(days);document.cookie=`${COOKIE_NAME}=${encodeURIComponent(name)};expires=${expires};path=/;SameSite=Lax`;document.cookie=`${CONSENT_NAME}=accepted;expires=${expires};path=/;SameSite=Lax`;cookieBanner.hidden=true;statusEl.textContent=`Cookie сохранена на ${days} дн. Имя: ${name}.`}function declineCookies(){document.cookie=`${CONSENT_NAME}=declined;max-age=${60*60*24*30};path=/;SameSite=Lax`;document.cookie=`${COOKIE_NAME}=;expires=${new Date(0).toUTCString()};path=/;SameSite=Lax`;cookieBanner.hidden=true;userNameInput.value="";statusEl.textContent="Вы отказались от хранения cookie."}function removeCookies(){document.cookie=`${COOKIE_NAME}=;expires=${new Date(0).toUTCString()};path=/;SameSite=Lax`;document.cookie=`${CONSENT_NAME}=;expires=${new Date(0).toUTCString()};path=/;SameSite=Lax`;userNameInput.value="";cookieBanner.hidden=false;statusEl.textContent="Cookie удалены."}function getExpires(days){const date=new Date();date.setTime(date.getTime()+days*24*60*60*1000);return date.toUTCString()}function getCookie(name){const cookies=document.cookie?document.cookie.split("; "):[];for(const cookie of cookies){const [key,...rest]=cookie.split("=");if(key===name)return decodeURIComponent(rest.join("="))}return null}