javascript - 使用 cookie 只显示我的弹出窗口一次?
问题描述
我正在努力将 cookie 控件添加到我的弹出窗口中,因此它只显示一次。
var modal = document.querySelector(".modal");
var close = document.getElementById("myDiv");
var element = document.getElementById("myDiv");
function popupScroll() {
element.classList.add("show-modal");
}
function closeModal() {
element.classList.add("hide-modal");
}
window.addEventListener("scroll", popupScroll);
window.addEventListener("click", closeModal);
解决方案
您可以使用localStorage
或sessionStorage
。
whilelocalStorage
访问当前域的本地Storage 对象并向其添加数据项,sessionStorage
访问当前域的会话Storage 对象并向其添加数据项。
var modal = document.querySelector(".modal");
var close = document.getElementById("myDiv");
var element = document.getElementById("myDiv");
function popupScroll() {
if (!localStorage.getItem('showPopup')) { //check if popup has already been shown, if not then proceed
localStorage.setItem('showPopup', 'true'); // Set the flag in localStorage
element.classList.add("show-modal");
}
}
function closeModal() {
element.classList.add("hide-modal");
}
window.addEventListener("scroll", popupScroll);
window.addEventListener("click", closeModal);
请记住,虽然已设置的项目sessionStorage
与您的浏览器会话一样长,但这些localStorage
项目没有到期时间。话虽如此,在您当前的情况下,您可以使用localStorage
或sessionStorage
。
推荐阅读
- ios - 如何使用 Swift 在 Tableview Cell 中添加 UITableview
- python - 如何在 Tkinter 窗口中显示文本变量?
- angular - D3 Pie Legend 未显示
- html - 列表的 CSS 不适用于 Bootstrap 4
- c# - 如何使用 LINQ 连接多个选择?
- python - 将函数分配给python中的变量,两种不同的方式
- c++ - 由于 strlen() 导致分段错误
- powershell - 使用 select-object @{name="Name"; 时出现问题 表达式=$变量}
- reactjs - 如何在反应中显示列中的数据
- nginx - 通过 Minikube 在本地运行 Kubernetes 总是返回 304 not modified resource