Стратегии сохранения данных формы ( на вкладке / закрытие браузера )
-
22-09-2019 - |
Вопрос
У меня проблема с приложением для управления задачами, из-за которого иногда пользователи закрывают свои браузеры / вкладки, и информация, которую они вводят, исчезает, потому что они случайно закрывают браузер / вкладку, что приводит к потере введенного ими текста (а некоторые могут потратить полчаса на ввод текста ).
Итак, я должен предложить решение, у меня есть пара идей, но я хотел бы предложить лучшее из них, или, если у вас есть решение получше, дайте мне послушать вас.
Вариант 1:
- На
window.onunload
или , возможноwindow.onbeforeunload
событие вызывает диалоговое окно подтверждения () и сначала проверяет, есть ли в области ведения журнала задач какой-либо текст и не является ли она пустой.Если оно не пустое, вызовитеwindow.confirm()
и спросите, хочет ли пользователь закрыть вкладку / окно без сохранения журнала.
Мое беспокойство по поводу варианта № 1 заключается в том, что он может быть навязчивым для пользователя.
Вариант 2:
- В том же событии не вызывайте никакого подтверждения(), а вместо этого принудительно сохраните текст в области ведения журнала задач в файле cookie.Затем, возможно, предложите кнопку, которая пытается восстановить любую сохраненную информацию о задаче из файла cookie на той же странице, поэтому нажатие этой кнопки заставит ее проанализировать файлы cookie и извлечь информацию.
Решение
Если пользователь достаточно глуп, чтобы сориентироваться, прежде чем отправлять то, что он делал, то он не должен возражать против вторжения с вопросом, намереваются ли они сделать что-то явно глупое.
Кроме того, SO использует диалоговое окно подтверждения при переходе, и большинство (некоторых) пользователей здесь являются довольно умный.
Это самый простой в использовании способ, который, вероятно, больше поможет пользователям.
Если кто-то пишет длинный фрагмент текста, а затем закрывает браузер, не отправляя его, ему может быть приятнее разобраться с проблемой на месте, а не выяснять на следующее утро, что он этого не делал...
Другие советы
Событие window.onbeforeunload работает немного странно.Если вы определите для него обработчик, браузер отобразит общее сообщение о потере данных при переходе со страницы, со строкой, которую вы возвращаете из функции обработчика, вставленной в середину сообщения.Смотрите здесь:
альтернативный текст http://img291.imageshack.us/img291/8724/windowonbeforeunload.png
Итак, что мы делаем:когда мы знаем, что что-то на странице не сохранено, мы устанавливаем:
window.onbeforeunload = function(){
return "[SOME CUSTOM MESSAGE FROM THE APP]";
}
и как только пользователь сохранит, и мы узнаем, что нам не нужно показывать им сообщение, мы устанавливаем:
window.onbeforeunload = null;
Это немного навязчиво, но это лучше, чем ваши пользователи случайно потеряют данные.
Я бы исследовал фреймворки AJAX для конкретного веб-сервера / языков, которые вы используете.AJAX позволит вам сохранять данные формы в том виде, в каком они были введены (например, так работает Google Docs).