当用户点击链接后,我该如何停止弹出窗口的出现?

3
我已经使用JavaScript在用户点击弹出通知时设置了一个 cookie,但是在完全关闭浏览器后,cookie 就会过期,并且在导航到该页面时再次显示通知。
我希望用户有选择地可以说“不要再显示这个”。
1)是否有更好的方法来保存数据,比如将数据保存到数据库中?
2)我能否设置 cookie,使其在窗口关闭时不过期?
以下是设置 cookie 的代码。如果 cookie 没有设置为“visited”,则调用另一个函数来 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;  
        }

2
你是如何设置 cookie 的呢? - putvande
你创建 cookie 的方式可能不完全正确。Cookie 应该设置为多天生存。 - SaidbakR
http://www.w3schools.com/js/js_cookies.asp - SaidbakR
刚刚更新了我的问题。 - iliketolearn
有一个适用于cookies的[jquery]插件。 - SaidbakR
为什么不使用服务器端脚本(PHP)来完成这个任务? - Aditya
4个回答

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";
}

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


0
为什么不在HTML5中使用localStorage来实现这个功能,因为它是持久的, 比如当用户第一次点击链接时设置标志。
localStorage.setItem('clicked', "yes");

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

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

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

0

0

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

如果你已经在使用jQuery,我建议使用优秀的jQuery Cookie插件,它可以让设置和获取cookie变得非常简单。请查看自述文件/文档以获取详细信息,并享受只需编写几行代码而不是50行的便利。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接