2011-05-24 74 views
3

我希望div #topmessage在用戶第二次訪問該網站時向下滑動。另外,當用戶單擊#close時,消息將不會再顯示。我想我必須設置一個cookie並計算它,但不知道如何。我有以下的cookie插件使用jQuery http://plugins.jquery.com/files/jquery.cookie.js.txt第二次訪問時顯示div

<script type="text/javascript"> 
    jQuery(function($){ 
    $('#topmessage').delay(1000).slideDown(400); 
    $("#close").click(function(){ 
      $("#topmessage").slideToggle(400); 
     }); 

}); 
</script> 
<div id="topmessage"> 
<a href="#" class="close" id="close">Close</a> 
Hi welcome back, if you have any questions please feel free to <a href="/contact">contact me</a>. 
</div> 

更新一起安裝:我想這樣做的原因是爲了在div推到誰曾經訪問過該網站,現在回來在另一個日期用戶。我不只是想第二次顯示該網站加載,但它必須在另一個日期或會議以及。據我所見,無法訪問cookie的創建日期?

回答

5

這應該工作:

<script type="text/javascript"> 
    $(function(){ 
     var value = $.cookie('the_cookie'), 
      date = null; 
     if (/^\d+$/.test(value || "")) { 
      date = new Date(); 
      date.setTime(value); 
     } else if ((value || "") == "") { 
      $.cookie('the_cookie', new Date().getTime()); 
     } 

     if (null != date /* && date meets your requirements */){ 
      $('#topmessage').delay(1000).slideDown(400); 
      $("#close").click(function(){ 
       $("#topmessage").slideToggle(400); 
      }); 
     } 
    }); 
</script> 

如果你想在每次訪問更新cookie中的日期:

 if (/^\d+$/.test(value || "")) { 
      date = new Date(); 
      date.setTime(value); 
     } 
     $.cookie('the_cookie', new Date().getTime()); 

在工作演示:http://jsfiddle.net/roberkules/NL9jd/

UPDATE

添加到期日期和路徑到cookie
僅爲會話添加第二個cookie

+0

謝謝 - 作品廣告。但是,我已經對最初的問題進行了更新,因爲我需要更詳細地描述問題。謝謝 – Thomas 2011-05-25 01:17:23

+0

現在cookie存儲時間戳。 – roberkules 2011-05-25 01:46:12

+0

由於某種原因沒有設置cookie? – Thomas 2011-05-25 14:49:55

1

我想這樣的東西應該存儲在後端,並由服務器控制。 Cookie存在的問題是有人可能會刪除其所有Cookie(或通過其他瀏覽器/計算機登錄)。聽起來像是與用戶有關的數據庫表上的屬性。

服務器可以簡單地設置一個標誌爲「顯示div」,視圖可以處理這一點。不知道您使用的是哪種側面技術。

+0

即使你的服務器端,你就必須對會話的cookie。除非您保存用戶IP地址,否則在以下情況下:1)未經用戶同意不得擅自進行2)IP可以是動態的,因此您無論如何都會丟失跟蹤。我認爲餅乾是最好的方法。 – Andre 2011-05-24 19:16:21

+0

我想我假設用戶意味着它是經過身份驗證的人。在這種情況下,您可以將所有數據保存在數據庫中,並根據IsFirstVisit或類似的東西顯示鏈接。如果這些只是隨機用戶,那麼是的,餅乾是唯一的出路。 – CtrlDot 2011-05-24 19:20:41

0

首先,您需要檢測cookie是否存在。 如果cookie存在,那麼你知道用戶已經訪問過一次。 如果cookie不存在,則首次訪問它,創建cookie。

1

可能(沒有使用jQuery的Cookie,但在看文檔...)做...

jQuery(function($){ 
    if($.cookie("showMessage") == "true") { 
    $('#topmessage').delay(1000).slideDown(400); 
$.cookie("showMessage","never"); 
} 
else if($.cookie("showMessage") != "never"){ 
$.cookie("showMessage","true"); 
} 
    $("#close").click(function(){ 
      $("#topmessage").slideToggle(400); 
$.cookie("showMessage","never"); 
     }); 
相關問題