如何在用户点击链接后显示弹出窗口?

时间:2014-02-04 19:09:44

标签: javascript

我在用户点击弹出通知时使用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;  
        }

4 个答案:

答案 0 :(得分:0)

你有没有机会使用会话cookie?它们会在您关闭浏览器时过期。

您可以继续阅读:

Why cookies dont expire after closing browser?

答案 1 :(得分:0)

您可以设置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 :(得分:0)

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

如果你已经在使用jQuery,我建议使用精彩的jQuery Cookie plugin,这使得设置和检索cookie成为一块蛋糕。有关详细信息,请参阅自述文件/文档,只需编写几行代码而不是50行。

答案 3 :(得分:0)

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

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

然后再次检查是否设置了此值

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

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