Стратегии сохранения данных формы ( на вкладке / закрытие браузера )

StackOverflow https://stackoverflow.com/questions/1589478

Вопрос

У меня проблема с приложением для управления задачами, из-за которого иногда пользователи закрывают свои браузеры / вкладки, и информация, которую они вводят, исчезает, потому что они случайно закрывают браузер / вкладку, что приводит к потере введенного ими текста (а некоторые могут потратить полчаса на ввод текста ).

Итак, я должен предложить решение, у меня есть пара идей, но я хотел бы предложить лучшее из них, или, если у вас есть решение получше, дайте мне послушать вас.

Вариант 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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top