2011-09-30 101 views
2

我有一个聊天应用程序,我想显示一个“请求主管”按钮,显示三分钟后用户已连接。这将包括用户刷新页面。隐藏连接三分钟的元素

这是我所拥有的,但它根本不够;

//shows the tooltip in 3 minutes 
window.setTimeout(function(){ 
     $("#panic-tooltip").fadeTo(1000, 1); 
    }, 180000); 

显然,如果用户刷新页面锁定。我在考虑如何使用cookie ......我不想在后端上做任何事情,但我可能不得不这样做。另外,我知道推技术是一个很好的解决方案,但这不是一种选择。我正在使用HTML5/CSS3/jQuery/jQuery UI btw,如果有任何帮助。

谢谢!

+0

是否使用任何后端技术,跟踪会话?您可以在用户连接的日期/时间的开头创建一个cookie,然后每隔几秒钟查看一次该cookie是否已创建3分钟。如果有,显示按钮。 – mellamokb

+0

推技术?这是轻微的矫枉过正。定时三分钟就像你在做'setTimeout'。如果你想要严格,那么记录他们连接到cookie(或本地存储)的时间,并在页面加载时检查该值并相应地进行计算。 – davin

+0

@davin - 正是我想剔除任何这些答案... thx为饼干提示你们两个 –

回答

0

这是我最后使用了...太糟糕了达文或mellamokb没有回答笑

if($.cookie("showPanic") == 'yes'){ 
    $("#panic-tooltip").fadeTo(1000, 1); 
} else { 
    window.setTimeout(function(){ 
     $("#panic-tooltip").fadeTo(1000, 1); 
     $.cookie("showPanic", "yes"); 
    }, 180000); 
} 
+0

如果用户每2分59秒更换一次页面不起作用,但我认为这是你想要的行为。 – mellamokb

0

假设你有一个函数来设置cookie和一个检索一个cookie,它是相对简单。

在第一次访问您设置与当前时间这样的饼干:

if(!getCooke('first_visit')) setCookie('first_visit', new Date().toString()); 

但只有当cookie是不是已经存在。

另外,你有一个间隔循环在时间上的差异的检查:

var timer = setInterval(function(){ 
    var oldDate = new Date(getCookie('first_visit')), 
     newDate = new Date(); 

    if(newDate - oldDate > 180000){ //time is in miliseconds 
     clearInterval(timer); 
     //show your message here 
     $("#panic-tooltip").fadeTo(1000, 1); 

    } 
},1000);