2011-08-27 65 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对象无法成功存储在本地存储中?