我有一个包含表单的弹出式覆盖页面,该表单会在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 谢谢你的帮助, 亚伦。
答案 0 :(得分:1)
$('#popup_launcher').one('click', (function(){
$('#overlay').show(1000);
$('html, body').animate({scrollTop:0}, 'slow');
return false;
});
这将只执行一次点击事件,然后自行删除。
答案 1 :(得分:0)
我会使用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
}
如果你愿意的话,你可以为1 vs 0包含一些if else逻辑,我只是为了示例目的而保持简单。
这将保留所有刷新。应该注意的是,这适用于IE8 +和所有真正的浏览器...如果你正在为IE6兼容性而拍摄它将无法解决。对于那些蹩脚的人,您可以编写一个单独的脚本来检索回发。要检测浏览器支持:
if(window.sessionStorage){
// do the above code
} else {
// reference postback script
}
这应该涵盖所有人。