【问题标题】:Hide an element for three minutes of connectivity隐藏元素三分钟连接
【发布时间】:2011-11-28 16:26:48
【问题描述】:

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

这是我所拥有的,但它真的完全不够;

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

显然,如果用户刷新它锁定的页面。我正在考虑以某种方式使用 cookie……我宁愿不必在后端做任何事情,但我可能不得不这样做。另外,我知道推送技术将是一个很好的解决方案,但这不是一个选择。

如果有任何帮助,我正在使用HTML5/CSS3/jQuery/jQuery UI btw。

谢谢!

【问题讨论】:

  • 您是否使用了任何跟踪会话的后端技术?您可以在用户连接的日期/时间开始时创建一个 cookie,然后每隔几秒钟查看自该 cookie 创建以来是否已经 3 分钟。如果有,显示按钮。
  • 推送技术?这有点矫枉过正。计时三分钟就像你正在做的那样,setTimeout。如果您想要严格,则将它们连接的时间记录在 cookie(或本地存储)中,并在页面加载时检查值并进行相应计算。
  • @davin - 正是我想清除这些答案中的任何一个......谢谢你们俩的cookie提示

标签: javascript events html user-interface time


【解决方案1】:

这就是我最终使用的......太糟糕了 davin 或 mellamokb 没有回答大声笑

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

【讨论】:

  • 如果用户每 2 分 59 秒更改一次页面,则不起作用,但我认为这是您想要的行为。
【解决方案2】:

假设你有一个设置 cookie 和一个检索 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2018-02-03
    • 1970-01-01
    相关资源
    最近更新 更多