javascript - 第一次关闭div,10分钟后不会再出现
问题描述
这是这种情况:
1)我们需要有一个框(div),它只在用户滚动半页时显示。
2)我们希望盒子记住用户是否第一次关闭盒子。它不会在至少 10 分钟内再次显示给用户。
你能帮我吗,我做了一些代码,我可以关闭/隐藏框但是当我再次向下滚动时,它再次出现,框并没有真正消失。
帮我完成这个而不使用jquery,纯javascript
我的关闭框代码:
function hide()
{
document.getElementById('popup').style.display = 'none';
};
向下滚动时我的显示框代码:
window.addEventListener("scroll",function()
{
if (window.pageYOffset >= 800 )
{
document.getElementById('popup').style.display = "block";
}
}, false);
如果你需要例如 html 代码:
<div id="popup" class="popup-container">
<form action="#" class="popup-form">
</form>
<div class="popup-close">
<span class="fa fa-close" onclick="hide()"></span>
</div>
</div>
解决方案
let localStorage = {};
let minTimeDiffSeconds = 5;
// let minTimeDiffSeconds = 10 * 60;
window.addEventListener("scroll",function(){
if(window.pageYOffset >= 800 ){
let currentTimeSeconds = Math.round((new Date()).getTime() / 1000);
//let timeLastClosed = localStorage.getItem('closedTime')
let timeLastClosed = localStorage.closedTime;
let timeDiffSeconds = currentTimeSeconds - timeLastClosed;
if (timeDiffSeconds > minTimeDiffSeconds) {
document.getElementById('popup').style.display = "block";
}
}
},false);
function hide() {
let currentTimeSeconds = Math.round((new Date()).getTime() / 1000);
//localStorage.setItem('closedTime', currentTimeSeconds);
localStorage.closedTime = currentTimeSeconds;
document.getElementById('popup').style.display = 'none';
};
.container {
height: 2000px;
width: 200px;
position: relative;
}
.popup-container {
position: fixed;
top: 0;
}
<div class="container">
<div>
Permanent Content
</div>
<div id="popup" class="popup-container">
<form action="#" class="popup-form">
</form>
<div class="popup-close">
<span class="fa fa-close" onclick="hide()">Popup</span>
</div>
</div>
</div>
您可以为此使用本地存储。当用户关闭它时存储时间戳,当用户滚动时,您检查是否已经过了足够的时间。如果是,则显示弹出窗口。Stackoverflow 不允许使用 localstorage,所以我创建了一个 localstorage 用于演示。您可以使用浏览器的本地存储,也可以按原样使用代码。
注意:对于片段,我将最短时间设置为 5 秒
推荐阅读
- excel - 基于数据透视表在图表中自动添加行
- sql - 在 PostgreSQL 中查找具有多个用户和重叠时间范围的时间戳中的差距
- sql - 按不在 SELECT 中的列对 SQL 输出结果进行排序
- python - 带大叶的 Choroplet 地图
- r - 使用 gsub 编写 R 函数时出错
- javascript - 设置属性文本参数
- python - 基于 pandas 中每一列的条件的逐列值替换
- javascript - 如何在客户端正确使用 Stripe api 保存卡
- pandas - Pvlib:ModelChain 的 DatetimeIndex 问题
- python - 数据框并传递一个变量来填充列