为新用户每15天加载一次Magnific Popup

时间:2015-02-27 19:01:27

标签: javascript jquery magnific-popup jquery-cookie

我有一个简报注册表单,我想每15天加载一次(弹出),否则可能会有点恼人。我目前正在使用此jquery代码在页面加载时加载弹出窗体。

<div id="test-popup" class="white-popup mfp-hide">
Popup Form
</div>

<script>
jQuery(window).load(function(){
jQuery.magnificPopup.open({
items: {src: '#test-popup'},type: 'inline'}, 0);
});
</script>

每次访问页面时加载表单都可以正常工作,但我想限制这一点,以便新用户每15天看一次。不确定15天是最好的做法,我想出的是什么?

3 个答案:

答案 0 :(得分:8)

can使用localStorage执行此操作。

$(window).on('load', function() {
  var now, lastDatePopupShowed;
  now = new Date();

  if (localStorage.getItem('lastDatePopupShowed') !== null) {
    lastDatePopupShowed = new Date(parseInt(localStorage.getItem('lastDatePopupShowed')));
  }

  if (((now - lastDatePopupShowed) >= (15 * 86400000)) || !lastDatePopupShowed) {
    $.magnificPopup.open({
      items: { src: '#test-popup' },
      type: 'inline'
    }, 0);

    localStorage.setItem('lastDatePopupShowed', now);
  }
});
<div id="test-popup" class="white-popup mfp-hide">
  Popup Form
</div>

您可以在此处查看一个有效的示例:http://codepen.io/caio/pen/Qwxarw

答案 1 :(得分:1)

用于创建和读取cookie的函数:

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
   else var expires = "";
   document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    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,c.length);
       if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);

    }
    return null;
}

创建一个为期15天的cookie:

createCookie('run_popup',true,15);

检查已过去15天

if(!readCookie('run_popup'))
... code for run popup...

答案 2 :(得分:0)

要让用户每15天打开一次弹出窗口,您可能希望设置一个每15天到期的Cookie。在您的页面上,检查cookie是否已过期,如果是,则显示您的表单并重置您的cookie。

this thread中,您可以找到快速启动Cookie的材料。

这将适用于每台计算机的每个浏览器,即如果用户在其他浏览器中打开您的页面,它将再次加载您的弹出窗口。