我正在尝试使用jQuery插件保存本地存储jStorage一些HTML以及该块插入本地存储的日期和时间,因此根据时间比较,如果5分钟过去,这将更新本地存储。
目前,它适用于所有浏览器,但不是,令人惊讶的是,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);
}
});
答案 0 :(得分:0)
您正在存储“日期”实例,然后将其传回日期构造函数。这可能不是你想要做的。
您可以存储原始数字时间戳:
$.jStorage.set("latest_update", now_date.getTime());
然后通过它来构建一个新的日期是有道理的。
(请注意,这是一个猜测;我正在试图弄清楚IE8是否会因为你描述Date构造函数是否传递了Date而混淆,但是jsfiddle目前似乎有问题:/)
编辑 - nope - bogus。 ... 再次编辑但显然这很有用(??)。当我说它是“虚假”时,我的意思是IE似乎可以从另一个日期实例化一个日期。但问题是,Date对象无法成功存储在本地存储中吗?