javascript – 三通曲奇

前端之家收集整理的这篇文章主要介绍了javascript – 三通曲奇前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立一个弹出与3个按钮!每个按钮需要设置一个cookie,但具有不同的到期时间/日期.我正在使用 jquery.cookie为此!

> 1按钮更是一个会话cookie.所以当点击这个按钮弹出窗口需要消失,并在我开始一个新的浏览器屏幕时再次显示.所以不要在同一个浏览器窗口和同一个网站上打开一个页面.
> 1按钮用于“不再显示弹出窗口”,将cookie设置为7天
> 1 cookie设置在AJAX成功函数中,设置为365天

无法正确设置不同的到期时间.所以例如当我点击会话cookie的按钮时,当我在网站内部打开一个新页面时,弹出窗口再次显示.

我看不出我做错了什么!我没有得到任何控制台错误,但cookie不会正确设置.

我所拥有的是:

  1. $(document).ready(function(){
  2.  
  3.  
  4. var my_cookie = $.cookie('regNewsletter');
  5.  
  6. if (!my_cookie) {
  7. setTimeout(function(){
  8. $('#newsletter').modal('show');
  9. },1000);
  10. }
  11. $(".close--btn").on("click",function () {
  12. $.cookie('regNewsletter',true,{
  13. path: '/',domain: ''
  14. });
  15. });
  16. $(".dismiss--btn").on("click",domain: '',expires: 7
  17. });
  18. });
  19. console.log(my_cookie);
  20.  
  21. // code for removing cookie when session ends //
  22. window.onbeforeunload = function() {
  23. $.removeCookie('regNewsletter',{ path: '/',domain: '' });
  24. };
  25.  
  26.  
  27. $("#newsletter .btn").click(function(e){
  28. e.preventDefault();
  29.  
  30. $.ajax({
  31. ...
  32.  
  33. success: function(txt,status,xhr){
  34. // some code //
  35.  
  36. $.cookie('regNewsletter',{
  37. path: '/',expires: 365
  38. });
  39.  
  40. // etc etc //
  41.  
  42.  
  43. });

解决方法

要设置一个会话cookie,您不需要在beforeforeload上删除它,而只是设置一个没有到期设置的cookie.您也不需要设置域,如果默认值为OK,即当前网页的域名.

live demo

  1. $(document).ready(function(){
  2. var my_cookie = $.cookie('regNewsletter');
  3. if (my_cookie && my_cookie=="true") {
  4. alert("Cookie found");
  5. } else {
  6. setTimeout(function(){
  7. //$('#newsletter').modal('show');
  8. alert("Popup newsletter");
  9. },function () {
  10. // set a session cookie. It'll be automatically deleted
  11. // when the browser is closed
  12. $.cookie('regNewsletter','true',{
  13. path: '/'
  14. });
  15. alert("session cookie set");
  16. });
  17. $(".dismiss--btn").on("click",expires: 7
  18. });
  19. alert("cookie set for 7 days");
  20. });
  21. console.log(my_cookie);
  22. $("#newsletter .btn").click(function(e){
  23. e.preventDefault();
  24. $.ajax({
  25. url:"setcookie.html",success: function(txt,xhr){
  26. $.cookie('regNewsletter',{
  27. path: '/',expires: 365
  28. });
  29. alert("cookie set for 365 days");
  30. }
  31. });
  32. });
  33. });

HTML:

  1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  2. <script src="jquery.cookie.js"></script>
  3. <button class="close--btn">close</button>
  4. <button class="dismiss--btn">dismiss</button>
  5. <span id="newsletter"><button class="btn">ajax</button></span>

猜你在找的JavaScript相关文章