Автосохранение текстовых форм

InstantCMS 2.X
#1 21 июня 2024 в 15:39

Подскажите, как реализовать сохранение контента в поле-редакторе текста, например:
— после случайного закрытия вкладки браузера, ее перезагрузки
— после неудачного сохранения (допустим с интернетом что-то)
Еще неплохо бы сделать отдельную кнопку для сохранения без перезагрузки страницы и без удаления данных текстовой формы.
Есть идеи у кого?

#2 22 июня 2024 в 14:07

Полностью поддерживаю. Ещё года 3 назад тоже об этом писал.  На vc.ru удобно автосохранение в черновики.  Если бы здесь было также, этогго было бы достаточно. Т.е просто раз в 10 секунд даже автосохранять, уже было бы отлично. 

#3 22 июня 2024 в 23:56

Не проверял, но по идее, должно работать, как простейший вариант.

На странице добавления редактирования записи, нужно добавить скрипт

  1. <script>
  2. $(document).ready(function() {
  3. var draft = localStorage.getItem("draft");
  4. if(draft){
  5. $('#content').val(draft);
  6. }
  7. setInterval(function(){
  8. var newdraft = $('#content').val();
  9. localStorage.setItem("draft", newdraft);
  10. }, 10000);
  11. });
  12. function clearDraft(){
  13. localStorage.removeItem("draft");
  14. }
  15. </script>

#content — id textarea куда вводится текст

10000 — время 

функция clearDraft — для очистки черновика, чтобы сработало нужно на кнопку для публикации записи добавить вызов функции onclick=«clearDraft();»

если этого не делать то при создании новой записи в поле ввода текста загрузится черновик от предыдущей записи.

В данном варианте запоминается один черновик для любых текстареа с id=«content», то есть если в разных типах контента форма для текста с одним ид, некто может начать писать текст в блог, потом сможет найти его при вводе текста на форуме))

Добавлено спустя 9 минут

В данном варианте запоминается один черновик для любых текстареа с id=«content», то есть если в разных типах контента форма для текста с одним ид, некто может начать писать текст в блог, потом сможет найти его при вводе текста на форуме))

Нил™

Чтобы этого избежать, для каждого типа контента создаём свой черновик.

Например в форме редактирования поста в блоге вместо

localStorage.getItem(«draft»);

setItem(«draft», newdraft);

removeItem(«draft»);

используем 

localStorage.getItem(«draft1»);

setItem(«draft1», newdraft);

removeItem(«draft1»);

на форуме draft2 и т.д.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.