我有一个内容会在滚动时显示。 当内容显示时,用户可以关闭它。如果用户选择关闭它然后刷新页面。即使用户向上滚动页面,内容也不会在10分钟后显示。
继承我的代码:
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";
}
}
在这里,我为首次访问和多次访问设置了2个参数
// show popup when scroll 50%
window.onscroll = function scroll(ev) {
// first time visited
if ((popUp.className==="closed" && window.innerHeight+window.scrollY) >= halfScreen && showOnce){
startDelay();
showOnce = false;
}
// same user multiple time visited the site
else if((popUp.className==="" && window.innerHeight+window.scrollY) >= halfScreen && showOnce){
slideUp();
showOnce = false;
}
};
// close button when click close
for(var i = 0; i<closePopUp.length; i++){
closePopUp[i].addEventListener('click', function(event) {
slideDown();
});
}
当我第一次打开页面时,内容会显示,当我选择关闭内容时,它会获得closed
课程(它的正确)。但是在我滚动到顶部刷新页面后,其显示的间隔为(也是正确的)。
问题:
1.如果我刷新页面顶部,内容将立即显示。
2.刷新并滚动并关闭内容后。内容再次显示。
它喜欢它再次读取功能?请帮忙