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

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

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

Опция 1:

  • В событии window.onunload или, возможно, window.onbeforeunload вызовите диалоговое окно подтверждения () и сначала проверьте, есть ли в области регистрации задач какой-либо текст и не является ли она пустой. Если оно не пустое, вызовите window.confirm() и спросите, хочет ли пользователь закрыть вкладку/окно без сохранения журнала.

Меня беспокоит вариант № 1, который может быть навязчивым для пользователя.

Вариант 2:

  • В том же событии не вызывайте подтверждение(), а вместо этого принудительно сохраните текст в области регистрации задач в файле cookie. Затем, возможно, предложите кнопку, которая пытается восстановить любую сохраненную информацию о задаче из файла cookie на той же странице, поэтому нажатие этой кнопки заставит ее проанализировать файлы cookie и получить информацию.

person meder omuraliev    schedule 19.10.2009    source источник
comment
Что значит навязчивый пользователь?   -  person S.Lott    schedule 19.10.2009
comment
Ну, вы знаете, как раздражают окна предупреждений и подтверждений, однако это может быть единственным исключением из этого правила? Понятия не имею.   -  person meder omuraliev    schedule 19.10.2009
comment
Если они все сделают правильно, диалога не будет, верно? Если они напечатают что-то, забудут сохранить и потеряют свою работу, это плохо, верно? Что плохого в том, чтобы спросить их, хотят ли они сохранить или игнорировать несохраненные изменения?   -  person S.Lott    schedule 19.10.2009


Ответы (3)


Если пользователь достаточно глуп, чтобы уйти, прежде чем отправить то, что он делал, тогда он не должен возражать против вторжения, чтобы спросить, не собираются ли они сделать что-то явно глупое.

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

Это самый простой в использовании и, вероятно, больше поможет пользователям.

Если кто-то напишет длинный кусок текста, а затем закроет браузер, не отправив его, он может быть более доволен решить проблему здесь и потом, чем обнаружить на следующее утро, что он этого не делал...

person cjk    schedule 19.10.2009


Я бы исследовал фреймворки AJAX для конкретных веб-серверов/языков, которые вы используете. AJAX позволит вам сохранять данные формы по мере их ввода (например, так работает Google Docs).

person noctonura    schedule 19.10.2009
comment
Я знаю, как это сделать, но я чувствую, что это сильно забьет сервер - я имею в виду ... привязку события keyup для десятков пользователей и отправку запроса ajax каждые пару секунд для каждого пользователя? - person meder omuraliev; 19.10.2009
comment
Вам не нужно делать это на клавиатуре, вы можете просто сделать это на размытии. Это, по крайней мере, означает, что пользователь закончил то, что он делал в этой конкретной области, и что это стоит сохранить. - person Stephen Caldwell; 19.10.2009
comment
Право .. возможно, как это набрано слишком много. Если вы делали это по таймеру каждые 60 секунд, каждые 5 минут и т. д., если и только если текст изменился, это также может работать для вашего сценария. - person noctonura; 19.10.2009