代码之家  ›  专栏  ›  技术社区  ›  Mark

自动保存图案

  •  1
  • Mark  · 技术社区  · 14 年前

    我正在使用本地存储在网页上执行Gmail样式的自动保存。

    所以我基本上每30秒存一次到本地,好的。

    问题是恢复。我无法检测用户是否崩溃或错误退出。

    所以假设用户崩溃了,再次加载表单,我不能继续保存和覆盖以前的自动保存。我需要恢复上一次保存。

    但假设用户没有崩溃。他做的每件事都是正确的,但随后使用不同的浏览器编辑同一个文件,因此没有新的数据到前一个浏览器的本地存储。

    然后他在前一个浏览器中加载文件。在这种情况下,不应还原本地存储。

    假设没有比较时间戳的方法,我如何解决这个问题?

    谢谢。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Community T.Woody    12 年前

    假设您使用的是像gmail这样的Ajax样式的页面。

    在页面级别保留一个布尔标记,但在本地存储和任何特定刷新区域之外。

    var bIsInited = false;
    

    无论是用户单击刷新还是首次加载页面(即在浏览器重新启动后),只要重新加载整个页面,该标志都将为假。

    如果在用户界面交互时此标志为假,则从本地存储恢复用户界面的状态,并将此标志设置为真。

    继续保持对localstorage的新更改(除非像以前一样,通过某种方式将标志设置为false,在这种情况下,在将ui写回localstorage之前,将localstorage读取到ui中是相同的信号)。

    这个流程有很多变化,但这就是它的要点。