【问题标题】:How can I make a pop up stop appearing after a user clicks the link?用户单击链接后如何使弹出窗口停止出现?
【发布时间】:2014-02-04 19:09:44
【问题描述】:

当用户点击弹出通知时,我使用 JavaScript 设置了 cookie,但在完全关闭浏览器后,cookie 过期,并且在导航到页面时再次显示通知。

我希望用户可以选择说“不再显示此内容”

1) 有没有更好的方法来做到这一点,比如将数据保存到数据库?

2) 我可以设置 cookie 使其在窗口关闭时不会过期吗?

这是设置 cookie 的代码。如果 cookie 未设置为“已访问”,它会调用另一个函数到 showLightBox()

$j(document).ready(function() { 

        $j(function() {
                    checkCookie();

                });

        function checkCookie() {
                var hasVisit = getCookie("hasVisited");

                if(hasVisit != "visited") {
                    showLightBox(); 
                }
        }

        function getCookie(c_name) {
            var c_value = document.cookie;
            var c_start = c_value.indexOf(" " + c_name + "=");

                   if (c_start == -1)
                   c_start = c_value.indexOf(c_name + "=");

           if (c_start == -1)
           c_value = null;          
           else
          {
              c_start = c_value.indexOf("=", c_start) + 1;
              var c_end = c_value.indexOf(";", c_start);
              if (c_end == -1)
              c_end = c_value.length;

                   c_value = unescape(c_value.substring(c_start,c_end));
          }
            return c_value;
        }

        function setCookie(cookieName, value) {

            document.cookie = cookieName + "=" + value;  
        }

【问题讨论】:

  • 你是如何设置cookie的?
  • 确定您创建 cookie 的方式并不完全正确。 Cookie 应设置为可保存多天。
  • 刚刚更新了我的问题。
  • jquery cookie插件。

标签: javascript


【解决方案1】:

您可以像这样设置 cookie 的过期日期。

document.cookie="username=suman; expires=Thu, 18 Dec 2020 11:00:00 GMT";

现在该 cookie 将于 2020 年 12 月 18 日删除。默认情况下,当您关闭浏览器时,该 cookie 将被删除。

更新:- 在您的情况下,cookie 将设置过期日期。

function setCookie(cookieName,value){
    document.cookie = cookieName+"="+value+"; expires=Thu, 18 Dec 2020 11:00:00 GMT";
}

您可以在日期字段中输入您想要的任何日期。

【讨论】:

    【解决方案2】:

    您是否曾使用过会话 cookie?当您关闭浏览器时,它们就会过期。

    您可以在此处继续阅读:

    Why cookies dont expire after closing browser?

    【讨论】:

      【解决方案3】:

      您可能没有为 cookie 设置过期时间,因此它默认为在浏览器关闭时过期的会话 cookie。

      如果您已经在使用 jQuery,我建议您使用美妙的 jQuery Cookie plugin,它使设置和检索 cookie 变得轻而易举。有关详细信息,请参阅自述文件/文档,并且只需编写几行代码而不是 50 行代码。

      【讨论】:

        【解决方案4】:

        为什么不在 html5 中使用 localStorage 来实现这一点,因为它是持久的, 就像当用户第一次点击链接时设置标志

        localStorage.setItem('clicked', "yes");
        

        然后再次检查是否设置了这个值,

           if(localStorage.getItem('clicked')!=null){
             //clicked
           }
           else
           {
            //not clicked
           }
        

        如果设置了此值,则显示“不再显示”,否则不要...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-11-08
          • 1970-01-01
          • 1970-01-01
          • 2013-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多