2012-10-17 128 views
1
<script type="text/javascript"> 
jQuery(document).ready(function(){ 
if (document.cookie.indexOf('visited=false') == -1) 
{ 
var fifteenDays = 1000*60*60*24*30; 
var expires = new Date((new Date()).valueOf() + fifteenDays); 
document.cookie = "visited=true;expires=" + expires.toUTCString(); 
$.colorbox({width:"400px", inline:true, href:"#exestylepopups"}); 
} 
}); 
</script> 

出了什麼問題我上面的代碼我的facebook一樣彈出被稱爲每次頁面在我的博客加載時間。我只是每30天只展示一次,我該怎麼做?cookie來顯示彈出每30天

回答

4

您的特定實施看起來像是您檢查了Cookie的'visited=false',但將cookie設置爲'visited=true',因此您的if語句永遠不會匹配。


我建議你使用一套經過驗證的cookie操作函數,然後你的任務將會非常簡單。

下面是我使用cookie功能時,我的環境中已經沒有他們:

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 

一旦你擁有了這些,你可以這樣做:

jQuery(document).ready(function() { 
    var visited = readCookie('visited'); 
    if (!visited || visited !== "true") { 
     createCookie('visited', "true", 30); 
     $.colorbox({width:"400px", inline:true, href:"#exestylepopups"}); 
    } 
}); 
+0

非常感謝你.. .perfact回答。 – Shwet