我正在建立一个弹出与3个按钮!每个按钮需要设置一个cookie,但具有不同的到期时间/日期.我正在使用
jquery.cookie为此!
> 1按钮更是一个会话cookie.所以当点击这个按钮弹出窗口需要消失,并在我开始一个新的浏览器屏幕时再次显示.所以不要在同一个浏览器窗口和同一个网站上打开一个页面.
> 1按钮用于“不再显示弹出窗口”,将cookie设置为7天
> 1 cookie设置在AJAX成功函数中,设置为365天
无法正确设置不同的到期时间.所以例如当我点击会话cookie的按钮时,当我在网站内部打开一个新页面时,弹出窗口再次显示.
我看不出我做错了什么!我没有得到任何控制台错误,但cookie不会正确设置.
我所拥有的是:
$(document).ready(function(){ var my_cookie = $.cookie('regNewsletter'); if (!my_cookie) { setTimeout(function(){ $('#newsletter').modal('show'); },1000); } $(".close--btn").on("click",function () { $.cookie('regNewsletter',true,{ path: '/',domain: '' }); }); $(".dismiss--btn").on("click",domain: '',expires: 7 }); }); console.log(my_cookie); // code for removing cookie when session ends // window.onbeforeunload = function() { $.removeCookie('regNewsletter',{ path: '/',domain: '' }); }; $("#newsletter .btn").click(function(e){ e.preventDefault(); $.ajax({ ... success: function(txt,status,xhr){ // some code // $.cookie('regNewsletter',{ path: '/',expires: 365 }); // etc etc // });
解决方法
要设置一个会话cookie,您不需要在beforeforeload上删除它,而只是设置一个没有到期设置的cookie.您也不需要设置域,如果默认值为OK,即当前网页的域名.
$(document).ready(function(){ var my_cookie = $.cookie('regNewsletter'); if (my_cookie && my_cookie=="true") { alert("Cookie found"); } else { setTimeout(function(){ //$('#newsletter').modal('show'); alert("Popup newsletter"); },function () { // set a session cookie. It'll be automatically deleted // when the browser is closed $.cookie('regNewsletter','true',{ path: '/' }); alert("session cookie set"); }); $(".dismiss--btn").on("click",expires: 7 }); alert("cookie set for 7 days"); }); console.log(my_cookie); $("#newsletter .btn").click(function(e){ e.preventDefault(); $.ajax({ url:"setcookie.html",success: function(txt,xhr){ $.cookie('regNewsletter',{ path: '/',expires: 365 }); alert("cookie set for 365 days"); } }); }); });
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="jquery.cookie.js"></script> <button class="close--btn">close</button> <button class="dismiss--btn">dismiss</button> <span id="newsletter"><button class="btn">ajax</button></span>