我做错了什么?

时间:2012-11-13 23:23:26

标签: javascript cookies

我正在使用这个javascript代码用于cookie,我希望实现这一点:当访问者点击关闭时,div将隐藏在网站的所有页面上。

<script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function()
{
if(getCookie('show_cookie_message') != 'no')
{
    $j('#cookie_box').show();
}

$j('.cookie_box_close').click(function()
{
    $j('#cookie_box').animate({opacity:0 }, "slow");
    setCookie('show_cookie_message','no');
    return false;
});
});

function setCookie(cookie_name, value)
{
document.cookie = cookie_name+ "=" + escape(value);
}

function getCookie(cookie_name)
{
if (document.cookie.length>0)
{
    cookie_start = document.cookie.indexOf(cookie_name + "=");
    if (cookie_start != -1)
    {
        cookie_start = cookie_start + cookie_name.length+1;
        cookie_end = document.cookie.indexOf(";",cookie_start);
        if (cookie_end == -1)
        {
            cookie_end = document.cookie.length;
        }
        return unescape(document.cookie.substring(cookie_start,cookie_end));
    }
}
return "";
}
</script>

#cookie_box
{ 
position: fixed;
display: none;
bottom: 0px;
font-size: 0.8em;
z-index: 1000;
background:#393939;
padding:5px;
text-align:center;
width:99%;
color:#ffffff;
}
#cookie_box a:hover
{ 
    color:#ffffff;
    text-decoration: underline
}


<div id="cookie_box">Our site requires cookies to function, <a href="/cookies">click here</a> for more information <a href="#" class="cookie_box_close">Close [X]</a></div>

如果我点击“关闭”,它将关闭cookie_box div但仅关闭该页面。如果我浏览到另一个页面,div再次可见。 任何帮助都会很棒,谢谢!

2 个答案:

答案 0 :(得分:0)

如果Cookie正确并且设置正确,您可以使用以下内容:

if (getCookie('show_cookie_message') != 'no') {
    $j('#cookie_box').show();
} else {
   $j('#cookie_box').hide();
} 

这样可以确保它显示或隐藏。

答案 1 :(得分:0)

为了确保正确设置和检查cookie,我使用这些JS cookie代码经过多年的经验...有时候短路是不可靠的。

function getCookie(c_name){
 var i,x,y,ARRcookies=document.cookie.split(";");
 var ARRcookies_length=ARRcookies.length;
 for (i=0;i<ARRcookies_length;i++)
 {
   x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
   y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
   x=x.replace(/^\s+|\s+$/g,"");
   if (x==c_name)
     {
     return unescape(y);
     }
   }
 }

function checkCookie(cookie_name){
 var the_cookie=getCookie(cookie_name);
   if (the_cookie!=null && cookie_name!=""){
   return true
   }
   else {
   return false;
   }
}

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