Подскажите, как реализовать сохранение контента в поле-редакторе текста, например:
— после случайного закрытия вкладки браузера, ее перезагрузки
— после неудачного сохранения (допустим с интернетом что-то)
Еще неплохо бы сделать отдельную кнопку для сохранения без перезагрузки страницы и без удаления данных текстовой формы.
Есть идеи у кого?
Полностью поддерживаю. Ещё года 3 назад тоже об этом писал. На vc.ru удобно автосохранение в черновики. Если бы здесь было также, этогго было бы достаточно. Т.е просто раз в 10 секунд даже автосохранять, уже было бы отлично.
Не проверял, но по идее, должно работать, как простейший вариант.
На странице добавления редактирования записи, нужно добавить скрипт
<script> $(document).ready(function() { var draft = localStorage.getItem("draft"); if(draft){ $('#content').val(draft); } setInterval(function(){ var newdraft = $('#content').val(); localStorage.setItem("draft", newdraft); }, 10000); }); function clearDraft(){ localStorage.removeItem("draft"); } </script>
#content — id textarea куда вводится текст
10000 — время
функция clearDraft — для очистки черновика, чтобы сработало нужно на кнопку для публикации записи добавить вызов функции onclick=«clearDraft();»
если этого не делать то при создании новой записи в поле ввода текста загрузится черновик от предыдущей записи.
В данном варианте запоминается один черновик для любых текстареа с id=«content», то есть если в разных типах контента форма для текста с одним ид, некто может начать писать текст в блог, потом сможет найти его при вводе текста на форуме))
В данном варианте запоминается один черновик для любых текстареа с id=«content», то есть если в разных типах контента форма для текста с одним ид, некто может начать писать текст в блог, потом сможет найти его при вводе текста на форуме))
Чтобы этого избежать, для каждого типа контента создаём свой черновик.
Например в форме редактирования поста в блоге вместо
localStorage.getItem(«draft»);
setItem(«draft», newdraft);
removeItem(«draft»);
используем
localStorage.getItem(«draft1»);
setItem(«draft1», newdraft);
removeItem(«draft1»);
на форуме draft2 и т.д.