具有历史记录支持的单页Web应用程序中的表单字段:缓存用户输入

时间:2012-10-27 22:06:39

标签: javascript html5 web browser-history singlepage

在我看来,一个好的单页面Web应用程序应该尽可能地(并且明智地)传统的Web应用程序,它可以对每个用户操作进行整页(重新)加载。特别是,单页Web应用程序应支持浏览器历史记录,包括后退和前进按钮。

单页Web应用程序的大多数框架都支持浏览器历史记录。但他们似乎并不模仿一个关键的事情:当我在传统Web应用程序的第1页上并填写表单字段时,导航到应用程序的第2页然后单击后退按钮,浏览器将恢复我的意见。

使用单页Web应用程序时,通常会发生以下两种情况之一:第1页的表单字段仍然是第2页(或至少是Javascript数据结构的一部分)的DOM(但隐藏)的一部分,这样应用程序可以在导航回来后再次向我显示填写的表单字段,或者每当我访问第1页时(通过直接导航或按后退按钮)重新创建表单字段。在后一种情况下,我以前的输入没有恢复。

很明显,前者更好。但即使这个解决方案也不完美:在传统的Web应用程序中,每个历史记录条目都有自己的表单字段缓存值,即使历史记录包含多次前面提到的页面1。但是,单页应用程序不会在每个应用程序内导航中重新创建表单字段,只会为每个表单字段缓存一个值。

解决此问题并使单页Web应用程序更好的一个想法是将表单字段的值存储在pushState的 data 属性和HTML5历史记录接口的replaceState方法中将它们存储在其他历史信息中。当然,当前历史记录条目必须在用户导航之前保持更新,因此必须在所有使用replaceState更新当前历史记录条目的表单控件上使用 onchange -event处理程序。

现在我的问题是,是否有更好的解决方案来解决上述问题以及是否有任何单页Web应用程序框架/库可以处理它。

0 个答案:

没有答案