JavaScript кросс-браузерное сравнение дат? - PullRequest
1 голос
/ 28 августа 2011

Я пытаюсь сохранить в локальном хранилище с помощью плагина 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);
    }
});

1 Ответ

0 голосов
/ 28 августа 2011

Вы сохраняете «Date» instance , а затем передаете его обратно в конструктор Date. Это, вероятно, не то, что вы хотите сделать.

Вы можете сохранить необработанную цифровую метку времени:

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

Тогда имеет смысл передать это, чтобы позже построить новую дату.

(Обратите внимание, что это предположение; я пытаюсь выяснить, не будет ли IE8 запутан, как вы описываете, если конструктору Date передана Date, но jsfiddle, похоже, имеет проблемы в данный момент: /)

изменить & mdash; Нет - фальшивка. ... Отредактируйте снова но, очевидно, это было полезно (??). Когда я сказал, что это «фальшивка», я имел в виду, что IE, кажется, в порядке с созданием даты от другой даты. Возможно, однако, проблема заключалась в том, что объекты Date не могут быть успешно сохранены в локальном хранилище?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...