2011-05-24 100 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"); 
     }); 
相关问题