你好我尝试创建该函数以防止其他函数运行10分钟如果用户关闭内容并刷新页面。
另一个功能是用2参数滚动时显示内容 第一:如果用户点击关闭并刷新,它将以第一个参数运行该函数,没有间隔。它将运行给出间隔
的第二个参数继承我的代码。
https://jsfiddle.net/8c1ng49a/1/
请查看此代码
var popUp= document.getElementById("popup");
var closePopUp= document.getElementsByClassName('popup-close');
var halfScreen= document.body.offsetHeight/2;
var showOnce = true;
var delay;
function slideUp(){
popUp.style.maxHeight="400px";
popUp.style.padding="10px 20px";
popUp.style.opacity="1";
if(popUp.className==="closed"){
popUp.className="";
}
}
function slideDown(){
popUp.style.maxHeight="0";
popUp.style.padding="0 20px";
popUp.style.opacity="0";
// add class closed for cache
if(popUp.className===""){
popUp.className="closed";
localStorage.setItem('closed', 'true'); //store state in localStorage
}
}
// start interval
function startDelay() {
delay = setInterval(slideUp, 1000);
}
// clear interval
function clearDelay() {
window.clearTimeout(delay);
}
// check if cache heve class close
window.onload = function() {
var closed = localStorage.getItem('closed');
if(closed === 'true'){
popUp.className="closed";
}
}
// show popup when scroll 50%
window.onscroll = function scroll(ev) {
// first time visited
if ((window.innerHeight+window.scrollY) >= halfScreen && showOnce) {
slideUp();
showOnce = false;
}
//same user mutilple time visited the site
else if((popUp.className==="closed" && window.innerHeight+window.scrollY) >= halfScreen && showOnce ){
startDelay();
showOnce = false;
}
};
// close button when click close
for(var i = 0; i<closePopUp.length; i++){
closePopUp[i].addEventListener('click', function(event) {
slideDown();
});
}
当我刷新时,我的间隔对第二个参数没有起作用,我不知道为什么。
但是如果在我的第一个参数上添加startDelay
它的工作。但我需要把间隔放在我的第二个论点上
答案 0 :(得分:0)
当你想延迟使用setTimeout函数时。 Here is documentation of this function.
setInterval重复调用函数或执行代码片段,每次调用之间有固定的时间延迟。