Проблема с хранилищем HTML5

#javascript #html

#javascript #HTML

Вопрос:

У меня есть поле для заметок, которое можно использовать для хранения заметок, изначально я использовал cookies для хранения записей, затем я попробовал хранилище HTML5 и не могу заставить его работать, вот код:

 $(document).ready(function () {
$('#savesNotes').click(function () {            
    localStorage.nltwonotes=document.forms[0].todo1.value;
}
});

document.forms[0].todo1.value=localStorage.nltwonotes;
});
  

Комментарии:

1. Вы разобрались с этим? Если нет, я могу скинуть для вас простую демонстрацию…

2. Я еще не разобрался в этом…

3. Я думаю, у вас просто есть лишний } ? Если это тоже не так, я закодирую вам что-нибудь, но я думаю, что это } в строке 4 вашего фрагмента выше 🙂

4. Упс, код, который я туда поместил, я урезал и забыл его удалить, так что это не проблема.

5. Вот и все, рабочий образец. С таким же успехом вы могли бы использовать удивительный движок Sizzle selector от jQuery, поскольку он используется в моем примере 🙂

Ответ №1:

Вот некоторый рабочий код: Предварительный просмотр (введите, затем просмотрите ваше localStorage в вашей консоли) :
http://jsbin.com/exote5/

Источник:
http://jsbin.com/exote5/edit

 $(document).ready(function () {
  $('#saveNotes').click(function () {
      localStorage.nltwonotes=$('#note').val();
  });
  if(localStorage.nltwonotes){
    $('#note').val(localStorage.nltwonotes);
  }
  else{
    //Not set yet
  }
});
  

== ПРИМЕЧАНИЕ О ФАЙЛЕ:/// ПРОТОКОЛ ==
У вас должно быть localStorage на сервере (http или https). Firefox не позволит вам использовать их локально. Если вы используете Mac, вы можете использовать MAMP или Windows, вы можете использовать WAMP, если вы используете Linux, вы, вероятно, уже знаете, как настроить локальную среду хостинга с помощью apache, который обычно предоставляется…

Комментарии:

1. Как мне просмотреть localStorage? (Я в Firefox)

2. Firebug в Firefox отличается от консоли веб-разработчика в webkit. В WebKit есть хорошая страница для просмотра их всех. В Firebug вам нужно открыть его, ввести что-то в это поле, затем нажать кнопку сохранить заметку. ЗАТЕМ в firebug > консоль введите «localStorage» и нажмите enter. Он покажет все данные

3. Хорошо, я вижу это. Я не вижу этого для своей страницы, хм, должен выяснить, что не так…

4. Да, это так. Включен ли механизм выбора jQuery Sizzle в основной файл jQuery? (Я использую версию 1.6)

5. В конечном итоге это произойдет chrome:// потому что это для дополнения Firefox

Ответ №2:

Я бы рекомендовал использовать методы, предоставляемые для доступа к localStorage, вместо того, как вы это делаете:

 localStorage.setItem("nltwonotes", document.forms[0].todo1.value);
  

Затем, чтобы получить значение:

 document.forms[0].todo1.value = localStorage.getItem("nltwonotes");
  

Однако обязательно проверьте, доступен ли localStorage вообще:

 function supports_html5_storage() {
  try {
    return 'localStorage' in window amp;amp; window['localStorage'] !== null;
  } catch (e) {
    return false;
  }
}
  

В противном случае вы захотите отказаться / сообщить пользователю обновить свой браузер до того, который поддерживает локальное хранилище.

Комментарии:

1. У меня есть FF 4 в Ubuntu. Это все еще не работает! Это сработает, если я сделаю что-то вроде: $('#savesNotes').click(function () {localStorage.nltwonotes=document.forms[0].todo1.value;document.write(localStorage.nltwonotes); }

2. Но это просто для того, чтобы показать, что там что-то есть. Если я делаю это за пределами $('#savesNotes').click(function () , тогда он просто говорит null

3. @NL2 Убедитесь, что он активен. Выполните alert(typeof window['localStorage']) и посмотрите, что он возвращает. Это может сработать для функции anon, потому что она считает localStorage просто обычной переменной, для которой вы устанавливаете свойство.

4. Извините, я ввел неправильный код в свой первый комментарий, который я использовал, localStorage.setItem("nltwonotes", document.forms[0].todo1.value); я вставил alert(typeof window['localStorage']) внутрь $('#savesNotes').click(function () , и он выскочил со словами object , и это было все