2016-08-18 27 views
0

ページの読み込み時にモーダルを開始するようにCookieを設定しています。 現在、モーダルは1回しか発生しません。Cookieの有効期限を設定する

私は毎月リセットする必要があるので、訪問者ごとに月に1回ポップアップしています。

これを実現するためにコードを変更することは可能ですか、別の方法で行う必要がありますか?どんな助けもありがたい。

$(document).ready(function() { 
//if cookie hasn't been set... 
if (document.cookie.indexOf("ModalShown=true")<0) { 
    $("#newsletterModal").modal("show"); 
    //Modal has been shown, now set a cookie so it never comes back 
    $("#newsletterModalClose").click(function() { 
     $("#newsletterModal").modal("hide"); 
    }); 
    document.cookie = "ModalShown=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/"; 
} 

});

答えて

2

はちょうどあなたのクッキーの静的有効期限が、ダイナミックなものを設定しない:

var now = new Date(); //get the current date 
now.setMonth(now.getMonth() + 1); //add one month to it 
document.cookie = "ModalShown=true; expires=" + now.toUTCString() + "; path=/"; 
1

ねえ、私はあなた

役立つかもしれないクッキーを削除し、追加設定するための簡単なコードを与えるつもりです
function setCookie(name, value, expire) { 
    document.cookie = name + "=" + escape(value) + ((expire === null) ? "" : ("; expires=" + expire.toGMTString())); 
} 

function checkCookie(name) { 
    if (document.cookie !== "") { 
     var toCookie = document.cookie.split("; "); 
     for (var i = 0; i < toCookie.length; i++) { 
      var CookieName = toCookie[i].split("=")[0]; 
      var CookieValue = toCookie[i].split("=")[1]; 
      if (CookieName === name) return unescape(CookieValue); 
     } 

    } 
} 

function removeCookie() { 
    var CookieAlert; 
    CookieAlert = document.getElementById('cookie'); 
    var expire = new Date(); 
    expire.setMonth(expire.getMonth() + 1); 
    setCookie('agreeCookies', 'yes', expire); 
} 

window.onload = (function() { 
    //IF cookie exists do something 
    if (checkCookie('agreeCookies') !== 'yes') { 
     //Do something in your case dont start modal 
    } else { 
     //START MODAL 
    } 
}); 

だから、HTMLでは、あなたがモーダルであなたの閉じるボタンにonclickの=「removeCookieを()」を使用することができ、基本的にあなたがモーダル表示され、近いモーダルにクッキーを設定し、その後、月後にクッキーを使用して、もう一度それを示して期限切れになったとき

+1

['toGMTString()'](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTString)に注意してください。この関数は推奨されなくなりました: '非推奨 これはWeb標準から機能が削除されました。いくつかのブラウザはまだそれをサポートしているかもしれませんが、それは落とされつつあります。古いプロジェクトや新しいプロジェクトでは使用しないでください。それを使用しているページやWebアプリケーションはいつでも破損する可能性があります。 ' – empiric

+0

ありがとうございました@empiric :) –

0

あなたがする必要があるのは、有効期限を 'Fri、31 Dec 9999 23:59:59 GMT'ではなく+ 1ヶ月に更新することですが、クッキーのチェックの外に行うことで、古い有効期限は更新されたクッキーを取得します。

関連する問題