2009-09-03 2 views
1

Мне сложно определить, как автоматически сохранять данные пользователя в форме, когда браузер закрывается или пользователь меняет страницу. Событие onBeforeUnload в порядке, если вы хотите открыть диалоговое окно, но к этому времени слишком поздно сохранять изменения (за исключением того, что вы только блокируете браузер в обработчике onBeforeUnload достаточно долго, чтобы передать запрос на сервер ... но я не хочу этого делать).Работа с несохраненными данными формы при закрытии браузера пользователем

Я уверен, что некоторым из вас пришлось иметь дело с проблемой несохраненной формы. Чем ты занимаешься? Есть ли у вас:

  • позволяют пользователям просто теряют свои изменения,
  • задать их с помощью модальное окно, если они уверены, что они правильно сделали,
  • сохранение отдельных полей на лету как они меняются,
  • или у вас есть какой-то окончательный метод, чтобы автоматически записывал данные, когда он вот-вот потеряется безвозвратно?

ответ

1

Мне нравится ваш третий вариант:

  • сохранение отдельных полей на лету, как они меняются.

мне приходится иметь дело с подобной ситуацией, и это то, что мы делаем. Две основные вещи, которые продают это мне:

  1. Улучшение пользовательского опыта - пользователь будет впечатлен форме, не теряет изменений. Они являются «совершены» после их проверки. Например, он типа в действительный адрес электронной адрес, и он сохраняется мгновенно, кроме того, он снабжен какой-то обратной связи для каждого поля, которое успешно сохранен (зеленый тик, например, появляется рядом с в поле).
  2. Нет больше 'oh crap мой браузер разбился и я потерял всю свою информацию' ситуаций.

Недостатки: дополнительные человеко-часы, участвующие в разработке такого решения, и, возможно, это не ухудшает качество, как простое решение. Тем не менее, он по-прежнему стоит ИМО.

+0

С хорошей реализацией этого изящная деградация возможна практически без дополнительных затрат на реализацию второго решения без javascript (вы можете проверить поле отдельно и вместе с другими полями с одним и тем же фрагментом кода). – Meisner

3

• задать их с помощью модального окна, если они уверены, что они делают правильно,

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

+0

Начните писать ответ или комментарий здесь, на SO и уйти, он работает достаточно хорошо. – gnarf

+0

Когда дело доходит до webapps, в котором вы чаще всего редактируете вещи, подтверждение каждого изменения может оказаться утомительным. С автосохранением проблема возникнет, если вы поймете, что совершили ошибку, и вы хотели, чтобы вы не внесли изменений. Но, честно говоря, вы правы или неправы с вашими действиями чаще? И в webapp вы всегда можете реализовать откат/отмену для тех, кто колеблется - он будет более удобным (хотя и более сложным для разработчика). – Meisner

+0

Вам не нужно подтверждать каждое изменение только каждой группой изменений, поскольку изменения обычно производятся в группах данных (т. Е. Поля контакта, поля безопасности, строка данных в сетке и т. Д.). И обычно это делается без зная, как они будут вызывать действие (с помощью кнопки продолжения перейти к следующей группе полей или с помощью кнопки сохранения, чтобы выйти из режима редактирования и т. Д.), Что вызовет событие postback или javascript сервера, которое когда вы сохраните данные. Но это просто регулярный поток веб-приложений. –

0

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

Смежные вопросы