2010-06-09 4 views
1

Я использую localstorage для создания автосохранения в стиле gmail на веб-странице.autosave pattern

Так что я в основном сохраняю каждые 30 секунд на локальном, хорошо.

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

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

Но скажем, пользователь не потерпел крушение. Он сделал все правильно, но затем использовал другой браузер для редактирования одного и того же файла, поэтому никаких новых данных в локальном хранилище предыдущего браузера не было.

Затем он загружает файл в предыдущем браузере. В этом случае локальное хранилище не должно быть восстановлено.

Предполагая, что нет способа сравнить временные метки, как я могу решить эту проблему?

Спасибо.

+1

Почему вы не можете использовать временные метки? – luke

ответ

1

Предполагая, что вы используете страницу стиля AJAX, такую ​​как Gmail.

Храните булевский флаг на уровне страницы, но за пределами localstorage и вне любой конкретной области обновления.

var bIsInited = false; 

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

Если этот флаг является ложным при взаимодействии с пользовательским интерфейсом, восстановите состояние своего пользовательского интерфейса из localstorage и установите флаг в true.

Продолжить сохранение новых изменений в localstorage (если раньше, как и раньше, флаг был установлен на false каким-либо образом, в этом случае это тот же самый сигнал, чтобы читать localstorage в пользовательском интерфейсе, прежде чем писать интерфейс обратно в localstorage).

Существует много вариантов этого потока, но это его суть.