0

私は Cookie にこの JavaScript コードを使用していますが、これを実現したいと考えています。訪問者が閉じるをクリックすると、サイトのすべてのページで 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 が再び表示されます。どんな助けでも素晴らしいでしょう、ありがとう!

4

2 に答える 2

0

Cookie が正しく取得および設定されている場合は、次のようなものを使用できます。

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

そうすれば、表示または非表示のいずれかになります。

于 2012-11-13T23:31:24.480 に答える
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;
 }
于 2012-11-13T23:35:18.697 に答える