2011-08-27 66 views
1

我試圖保留本地存儲與jQuery插件jStorage一些HTML的塊,還有日期和時間,當該塊插入本地存儲,所以基於時間比較,如果5分鐘過去了,這將在本地更新存儲。JavaScript跨瀏覽器日期比較?

目前,它正在所有的瀏覽器上工作,但IE8及以下版本並沒有感到驚訝。 IE返回NaN

您能否告知我如何存儲日期並將其與當前時間進行比較 - 5分鐘即可實現跨瀏覽器?也許有毫秒,或者是所有瀏覽器都能識別的時間格式?

下面是代碼:

$(document).ready(function() { 

    var side_user_cp = $.jStorage.get("side_user_cp"); 
    var latest_update = new Date($.jStorage.get("latest_update")); // Here is where I get NaN with IE 
    var now_date = new Date(); 

    if(!side_user_cp || !latest_update){ // If browser doesn't support local storage, or it first time visit, load it with AJAX 
    $.get('/ajax/side_user_cp/', function(data) { 
      $.jStorage.set("latest_update",now_date); 
      $.jStorage.set("side_user_cp",data); 
      $('#side').prepend(data); 
      }); 
    } 
    else // Browser has support, so check should it be loaded with with AJAX or from Local storage 
    { 
    var check_date = new Date(now_date); 
    check_date.setMinutes(check_date.getMinutes()-5); 

    if(check_date > latest_update) // latest_update from Loacal storage is here NaN 
    { 
     $.get('/ajax/side_user_cp/', function(data) { 
      $.jStorage.set("latest_update",now_date); 
      $.jStorage.set("side_user_cp",data); 
      $('#side').prepend(data); 
     }); 
    } 
    else 
    { 
     $('#side').prepend(side_user_cp); 
    } 
}); 
+2

本地存儲是HTML5功能。 IE8及以下版本不支持HTML5。 – Will

+2

IE8有5MB本地存儲空間+ 5MB會話存儲空間http://msdn.microsoft.com/en-us/library/cc197062(VS.85).aspx – Bobo

+1

「$ .jStorage.get(」 latest_update「)'*之前*你將它傳遞給Date構造函數? – Pointy

回答

0

你存儲「日期」 實例,然後傳遞迴給Date構造函數。這可能不是你想要做的。

你可以存儲原始數字時間戳:

$.jStorage.set("latest_update", now_date.getTime()); 

然後,它會是有意義的傳遞後,構建一個新的日期。

(注意,這是一個猜測,我想弄清楚IE8是否會混淆你描述如果Date構造函數傳遞一個日期,但出現的jsfiddle有此刻的問題:/)

編輯nope - bogus。 ... 再次編輯但顯然這是有幫助的(??)。當我說它是「假的」時,我的意思是IE似乎可以通過從另一個日期實例化日期。然而問題可能是Date對象無法成功存儲在本地存儲中?