每次访问显示一次模态
Show modal once per visit
我知道这个问题之前被问过很多次,但我仍然找不到任何解决方案来解决我的"问题",每次访问只显示一次我的模态。我也尝试了许多不同的(cookie)脚本,但没有任何与现有脚本结合使用的内容。非常感谢!
.HTML
<div id="MyPopup" class="overlay">
<div class="autopop">
<a class="close" href="#MyPopup">×</a>
<div class="a-content">
Some content goes here.
</div>
</div>
</div>
.CSS
.overlay::before,
.overlay .autopop {
top: 0;
right: 0;
bottom: 0;
left: 0;
position: fixed;
}
.overlay::before {
content: "";
background: rgba(0, 0, 0, .8);
display: block;
z-index: 99990
}
.overlay .autopop {
width: 30%;
height: 70%;
margin: auto;
font: 18px/1.5em Open Sans;
background: #ff9933;
border-radius: 5px;
box-shadow: 0 10px 15px 0 #000;
z-index: 99999;
transition: all 3s ease-in-out;
}
.overlay:target::before {
display: none;
}
.overlay:target .autopop {
top: -200%;
right: -200%;
transform: rotate(90deg);
}
.autopop .a-content {
height: 100%;
overflow: auto;
padding: 0 10px;
}
.autopop .close {
top: 0;
right: 15px;
font: 800 30px Open Sans;
color: #fff !important;
transition: all 0.2s;
position: absolute;
}
JQUERY(延迟启动弹出窗口}
$(document).ready(function(){
$("#MyPopup").hide(0).delay(7000).fadeIn(0)}
);
cookie
选项的完整答案是:
- 显示弹出窗口后,向浏览器添加
cookie
。 - 在每次中,检查浏览器是否有此
cookie
。
由于技术原因,您无法在此处看到结果(预览的iframe设置为sanbox iframe),因此您可以在此处看到它。
注意:对于跨浏览器支持,最好使用 cookie
而不是 localStorage
。
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
var cookie = getCookie('shown');
if (!cookie) {
showPopup();
}
function showPopup() {
setCookie('shown', 'true', 365);
document.querySelector('#MyPopup').style.display = 'block';
}
#MyPopup {
display:none;
}
<div id="MyPopup" class="overlay">
<div class="autopop">
<a class="close" href="#MyPopup">×</a>
<div class="a-content">
Some content goes here.
</div>
</div>
</div>
你为什么不使用localstorage
?
示例代码:
if (localStorage.getItem('IsModalShown').toString() != 'true')
{
showModal();
localStorage.setItem('IsModalShown',true);
}
相关文章:
- 模态中的数据关闭在单击时被调用两次
- 在表单提交后显示模态,直到加载下一页为止..不适用于狩猎
- jBox模态对话框Created监听器函数从第二次开始就不起作用了
- 回调函数在引导模态上调用两次甚至更多次
- Google PageSpeed Insights说我的网站很重.外部模态是一种解决方案吗?
- NG-模型似乎只在模态视图内的离子单选按钮上绑定一种方式
- Jquery 模态第二次不起作用
- 每次访问显示一次模态
- 在javascript中,在整个网站中仅自动打开一次模态
- jQuery一次触发所有模态窗口,即使具有不同的目标 #id
- 谷歌地图在模态没有显示后两次开放-离子
- 仅显示一次模态
- 当点击rails中的提交按钮时,如何在重定向到下一页之前显示模态
- 在带有模态窗口实例的 Angular JS 中保存和下一步
- 击倒带引导模态-模态出现两次
- 如何在Angular 2中一打开模态元素就把焦点设置在它们上
- JavaScript onClick:我必须点击两次模态出现
- jQueryUI模态对话框中的脚本只工作一次
- 在模态中加载模型只工作一次
- 警告显示两次模态引导