我有一个包含表单的弹出叠加页面,该页面在20秒后自动显示或通过单击div上的操作显示。
我需要它的工作,以便当页面刷新后发送的形式,定时器覆盖不会再次开始,也因此,如果链接覆盖被点击定时器不继续-基本上我需要它记住,如果它被触发,以便覆盖只触发一次。
jquery的函数如下:
//popup button click function
$('#popup_launcher').click(function(){
$('#overlay').show(1000);
$('html, body').animate({scrollTop:0}, 'slow');
return false;
});
//close button click function
$('#close').click(function(){
$('#overlay').hide(1000);
});
// popup timer function - change last value eg 20000 (20 seconds) to set time in milliseconds
setTimeout(function() {
$('#overlay').show(1000);
$('html, body').animate({scrollTop:0}, 'slow');
}, 20000);
页面正在开发中(表单提交尚未激活):http://www.tjsmarketing.co.uk/testarea/newquotepage/mk2/template.php?id=75890701谢谢你的帮助。亚伦。
$('#popup_launcher').one('click', (function(){
$('#overlay').show(1000);
$('html, body').animate({scrollTop:0}, 'slow');
return false;
});
这将只执行一次点击事件,然后自行删除。
我会使用sessionStorage
// on page load
sessionStorage.overlay = 0;
// on click
sessionStorage.overlay = 1;
// time triggers overlay
sessionStorage.overlay = 2;
检索:if(sessionStorage.overlay < 2){
// load form magic
}
如果你愿意,你可以包括一些if else逻辑1 vs 0,我只是为了举例目的而保持简单。
这将在所有刷新中保留。值得注意的是,这适用于IE8+和所有真正的浏览器…如果你的目标是IE6的兼容性,这是行不通的。对于那些蹩脚的人,您可以编写一个单独的脚本来进行检测。检测浏览器支持:
if(window.sessionStorage){
// do the above code
} else {
// reference postback script
}