jQuery - 请记住在页面刷新后是否已激活定时弹出窗口

时间:2013-03-13 17:39:19

标签: jquery cookies state activation

我有一个包含表单的弹出式覆盖页面,该表单会在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 谢谢你的帮助, 亚伦。

2 个答案:

答案 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
}

这应该涵盖所有人。