[翻译]HTML5 - 会话历史和导航

        原文为:https://w3c.github.io/html/browsers.html#session-history-and-navigation

一、浏览上下文的会话历史记录

        浏览上下文中的文档(Document)序列构成了它的会话历史。每一个浏览上下文,包含嵌套的浏览上下文,拥有各自独特的会话历史。浏览上下文的会话历史表示为一个平坦的会话历史入口的列表。会话历史列表中的每个条目,至少包含一个URL,可能还有一个序列化的状态(state object),一个标题,一个文档对象,表单数据,一个滚动位置信息和其他相关信息。

        注意:会话历史列表中的每个条目第一次被创建时,拥有一个文档。然而,当文档未激活时,它可能用来描述一个空的资源。如果用户代理发现自己不得不重新激活文档,URL和其他在会话历史列表条目的数据被用来传递给新的文档,并有该文档去替换原来的文档。

        注意:会话历史列表条目中的标题不需要与当前文档的标题有任何关系。一个会话历史列表条目的标题是为了解释那一时刻文档的状态,以让用户能够导航文档的历史。

        当用户(或脚本)在页面之间导航时,没有相关序列化状态的URL将被添加到会话历史记录中。

        每个在浏览上下文的回话历史中的Document对象与一个唯一的History对象相关联,它们必须以相同的基础会话历史为模板。

        Window接口的history属性必须返回根据Window对象最新的Document来实现的History接口的对象。

        序列化状态是表示用户界面状态的对象的序列化 (通过 StructuredSerializeForStorage)。有时, 我们非正式地将“状态对象”表示为作者提供的用户界面状态,或者是通过反序列化 (通过 StructuredDeserialize) 已被序列化的状态所创建的对象。

        页面可以将序列化状态添加到会话历史记录中。然后,当用户 (或脚本) 返回到历史记录中时,这些将再被反序列化并返回到脚本中,从而使作者即使在单页应用中也可以使用 “导航” 功能。

         注意:使用序列化状态主要有两个目的:首先,在 URL 关联的状态中存储之前已解析的描述,以便在简单的情况下,作者不需要再进行解析 (尽管您仍然需要解析需要处理的用户传递的URL,所以它只是一个小的优化),第二,作者可以存储的状态,但不会存储在 URL中,它只适用于当前的Document实例,如果一个新的文档打开,它需要重新建立。

        后面的一个例子是跟踪精确的坐标,以在特定位置使用动画弹出 div,如果用户返回,可以在相同的位置使用动画。或者,它可用一个指针指向数据缓存,其中存储通过URL中的信息从服务器上获取的数据,以便在前进和后退时不需要再次从服务器中获取信息。

        在任何时候,会话历史记录中的条目都是当前条目。这是表示浏览上下文活动文档的条目。至于哪个条目是当前条目是由本规范中定义的算法 (例如,在会话历史遍历期间) 更改的。

二、History接口

enum ScrollRestoration { "auto", "manual" }'

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywjfx.html