【问题标题】:Javascript cookie doesn't work on all pageJavascript cookie 不适用于所有页面
【发布时间】:2014-01-27 14:18:04
【问题描述】:

现场直播-http://chitrchatr.com

我成功地在退出按钮和另一个链接上添加了 setCookie 功能。因此,如果有人关闭弹出窗口或单击该链接,则 cookie 将被存储并且弹出窗口永远不会为他/她出现。

它工作得很好,我关闭/去链接它,它存储 cookie 但是当我尝试去另一个页面/网站链接时它再次出现(cookie 已经存储但它出现了)。知道如何解决它,这样如果有人在存储 cookie 后转到另一个页面,它就永远不会出现。

我的 HTML-

<div id="popupBox">
 <div id='popupContent' class='visiblebox' style='width:500px;height:446px;z-index:999999;left: 31%; top: 15%;'>
 <a onClick="document.getElementById('popupBox').style.display='none'; setCookie('abc', 'def', 1)" href='#' id='closebox' title='Close this box'>X</a>
.... 
PopUp content here
....
<a onClick="document.getElementById('popupBox').style.display='none'; setCookie('abc', 'def', 1)" href="http://chitrchatr.com/signup-and-win-new-smartphones-and-get-our-service-for-free/" target="_blank"><img class="alignnone size-full wp-image-1548" alt="Promotion_06" src="http://chitrchatr.com/wp-content/uploads/2014/01/Promotion_06.png" width="243" height="61" /></a>
 </div>
</div>

Javascript-

    <script type="text/javascript">

        function setCookie(c_name,value,exdays)
        {
        var exdate=new Date();
        exdate.setDate(exdate.getDate() + exdays);
        var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
        document.cookie=c_name + "=" + c_value;
        }

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


        if(getCookie('abc')=="def" && document.getElementById('popupBox'))
        document.getElementById('popupBox').style.display='none';
</script>

【问题讨论】:

    标签: javascript jquery cookies


    【解决方案1】:

    为您的 cookie 添加路径

    function setCookie(name, value, days, secure) {
      var expires = '';
      if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = '; expires='+date.toGMTString();
      }
      var domain = locDomain;
      document.cookie = name + '='+escape(value) + expires + '; path=/' + (domain ? '; domain=.' + domain : '') + ((secure && locProtocol == 'https:') ? '; secure' : '');
    }
    

    【讨论】:

    • 是的,这就是问题所在。我如何将cookie存储在root上?对不起,我没有太多的知识。在同一路径(页面路径)上应用您的代码 cookie 存储后,不在根目录中,因此弹出窗口再次出现在不同的页面上。
    【解决方案2】:

    尝试将cookie的位置设置为'/'

    【讨论】:

    • 是的,这就是问题所在。我如何将cookie存储在root上?对不起,我没有太多的知识。
    • vlad 的上述帖子很好。只需进行此更改。将 path=/;" 替换为 path/"
    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多