쿠키 배너
다음과 같이 보입니다.
그런 식으로 배치합시다 =)
HTML
<div class="warning warning--active">
<div class="warning__text">This website uses cookies.</div>
<button class="warning__apply" type="button">OK</button>
<a class="warning__read" href="https://ru.wikipedia.org/wiki/Cookie">Read more</a>
</div>
배너는 텍스트, 확인 버튼 및 설명 문서 링크로 구성됩니다.
기본 CSS
.warning {
position: fixed;
bottom: 0;
left: 0;
display: none;
width: 100%;
}
.warning--active {
display: flex;
}
다이를 왼쪽 하단 모서리에 놓고 너비를 가로질러 늘립니다.
자바스크립트
스크립트에서 다음을 수행해야 합니다.
warning--active
클래스를 제거하여 숨깁니다. let container;
let apply;
const init = () => {
if (!who()) {
// stop the script
return;
}
findElements();
subscribe();
};
누구
페이지에 블록이 없으면 함수는 false를 반환합니다.
const who = () => document.querySelector(".warning");
요소 찾기()
블록 자체와 내부 버튼을 찾으십시오.
const findElements = () => {
container = document.querySelector(".warning");
apply = container.querySelector(".warning__apply");
};
구독하다()
버튼에 "클릭"이벤트 핸들러를 추가합니다.
const subscribe = () => {
apply.addEventListener("click", onClick);
};
온클릭()
const onClick = (event) => {
// Override the default behavior
event.preventDefault();
// Hide the block
hideContainer();
// Set cookies
setCookie();
};
컨테이너 숨기기()
const hideContainer = () => {
container.classList.remove("warning--active");
};
기본 CSS 섹션에서
warning
클래스에 display: none;
속성이 있고 warning--active
클래스에 display: flex;
속성이 있음을 알 수 있습니다.warning--active
를 제거하여 블록을 숨깁니다.setCookie()
const setCookie = () => {
document.cookie = "warning=true; max-age=2592000; path=/";
};
사용자가 쿠키 사용에 동의했음을 알려주는 쿠키를 설정해 봅시다.
2592000 - number of seconds in a month
쿠키가 설정되면 차단이 더 이상 페이지에 나타나지 않는 것으로 간주됩니다.
이는 두 가지 방법으로 달성할 수 있습니다.
등을 통해
사용자가 설정한 쿠키를 가지고 있는 경우 차단을 표시하지 않도록 백엔드 또는 자신(백엔드인 경우)에 요청하십시오.
The author of this article prefers the backend method =)
정면을 통해
블록을 확인하는 대신 쿠키를 찾는
who()
함수를 다시 작성해 보겠습니다.const who = () => {
// If there are cookies, it will return true
return getCookie('warning');
};
The implementation of the
getCookie
function can be seen at learn.javascript.ru
HTML에서
warning--active
클래스를 제거하십시오.<div class="warning warning--active">
기본적으로 블록은 숨겨집니다. 스크립트가 쿠키를 찾지 못한 경우 표시해 보겠습니다.
const showContainer = () => {
container.classList.add("warning--active");
};
const init = () => {
if (!who()) {
return;
}
findElements();
showContainer();
subscribe();
};
다른 모든 것은 변경되지 않습니다.
전체 스크립트:
let container;
let apply;
const who = () => document.querySelector(".warning");
const findElements = () => {
container = document.querySelector(".warning");
apply = container.querySelector(".warning__apply");
};
const hideContainer = () => {
container.classList.remove("warning--active");
};
const setCookie = () => {
document.cookie = "warning=true; max-age=2592000; path=/";
};
const onClick = (event) => {
event.preventDefault();
hideContainer();
setCookie();
};
const subscribe = () => {
apply.addEventListener("click", onClick);
};
const init = () => {
if (!who()) {
return;
}
findElements();
subscribe();
};
init();
오온codepen
The full script can be reduced to 8 lines
if (document.querySelector(".warning")) {
const container = document.querySelector(".warning");
const apply = container.querySelector(".warning__apply");
apply.addEventListener("click", () => {
container.classList.remove("warning--active");
document.cookie = "warning=true; max-age=2592000; path=/";
});
};
Reference
이 문제에 관하여(쿠키 배너), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vadimfilimonov/cookie-banners-4nb4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)