2011-09-30 57 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);