我正在建立一个弹出与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>