2010-06-20 87 views
2

我正在開發一個asp.net項目,並且在這個項目中我使用了倒數計時器。我在jquery中寫了我的倒數計時器。它工作得很好。另一方面,當我點擊我項目中的另一個頁面時,打開倒計時頁面。我的倒數計時器不應該重新啓動。它必須繼續正確倒數。我想我會在會話中完成它,但Session會慢一點。它不適合實時。我該如何處理這個問題?ASP.NET中的計時問題

+1

也許你可以提供一些示例代碼作爲討論的基礎? – 2010-06-20 20:49:03

+0

它是在一個固定的時間點及時倒計時,還是'這個網頁會在十秒鐘內自我毀滅'倒計時? – PhilPursglove 2010-06-20 20:52:20

回答

0

var Timer; 
var TotalSec; 
function CreateTimer(TimerID, Time) { 

    Timer = "#" + TimerID; 
    TotalSec = Time; 
    // $("mytimer").show("normal", UpdateTimer(TotalSec)); 
    UpdateTimer(TotalSec) 
    window.setTimeout("Tick()", 1000); 
} 
function Tick() { 
    //var toto = Totalsec; 
    if (TotalSec <= 0) { 

     alert("Time is up") 
     jQuery('#btnSet').removeAttr("disabled"); 
     //  jQuery('#link').removeAttr("Enabled");  
     return; 
    } 
    TotalSec -= 1; 
    UpdateTimer() 
    window.setTimeout("Tick()", 1000); 
} 

function UpdateTimer() { 

    var Seconds = TotalSec; 

    var Days = Math.floor(Seconds/86400); 
    Seconds -= Days * 86400; 

    var Hours = Math.floor(Seconds/3600); 
    Seconds -= Hours * (3600); 

    var Minutes = Math.floor(Seconds/60); 
    Seconds -= Minutes * (60); 


    var TimeStr = ((Days > 0) ? Days + " gün " : "") + LeadingZero(Hours) + ":" + LeadingZero(Minutes) + ":" + LeadingZero(Seconds) 


    //  jQuery("" + Timer + "").text(TimeStr); 
    jQuery("#lbldene").text(TimeStr); 
} 

function LeadingZero(Time) { 

    return (Time < 10) ? "0" + Time : +Time; 

} 



$(document).ready(function() { 
    $.ajax({ 
     type: "POST", 
     url: "GenericWCF.svc/Timer", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg){ 
     CreateTimer('lbldene',msg.d); 
     } 
    }); 
}); 

我使用了一個WCF服務,以獲得剩餘時間打完頁面加載計時器開始倒計時。但是,當點擊應用程序中的新頁面並返回計時器頁面時。我的計時器重置我不想要它。我想繼續繼續倒計時

1

您可以將剩餘時間存儲在cookie中。

Jquery Cookie Plugin

這將是一個簡單的方法,因爲所有事情都保持客戶端。但是,如果你需要更安全一點的東西,你可以跟蹤它的服務器端。

// public property on countdown page 
public DateTime Countdown 
{ 
    get 
    { 
     if (Session["Countdown"] == null) 
      Session["Countdown"] = DateTime.Now; 

     return Session["Countdown"]; 
    } 
} 

的想法是,在第一時間將用戶訪問頁面,會話變量「倒計時」與當前日期和時間創建的,隨後的頁面訪問將檢索頁面的日期和時間最初訪問過。您可以將其作爲JavaScript變量呈現在頁面上,以便您的計時器可以確定剩餘時間並從中倒數。

如果某個Timespan已經通過,您還需要向該getter添加一些邏輯來重置會話變量。