javascript – 三通曲奇

前端之家收集整理的这篇文章主要介绍了javascript – 三通曲奇前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立一个弹出与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,即当前网页的域名.

live demo

$(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>
原文链接:https://www.f2er.com/js/154183.html

猜你在找的JavaScript相关文章