jquery - History.js 和状态

标签 jquery ajax html browser-history history.js

有人可以向我解释状态吗?

例如,使用 history.js插件。

History.pushState({state:1}, "State 1", "?state=1"); // logs {state:1}, "State 1", "?state=1"

我理解最后一个参数,因为它是推送到地址栏的 URL,但我不知道前两个参数。理解这些将帮助我在我的网站中实现 history.js,因为我在后退/前进导航方面遇到了麻烦。

关于Mozilla dev它说的网站:

状态对象 — 状态对象是一个 JavaScript 对象,它与 pushState() 创建的新历史条目相关联。每当用户导航到新状态时,都会触发 popstate 事件,并且该事件的 state 属性包含历史条目状态对象的副本。 状态对象可以是任何可以序列化的对象。因为 Firefox 将状态对象保存到用户的磁盘中,以便在用户重新启动浏览器后可以恢复它们,所以我们对状态对象的序列化表示施加了 640k 字符的大小限制。如果将序列化表示大于此的状态对象传递给 pushState(),该方法将抛出异常。如果您需要比这更多的空间,我们鼓励您使用 sessionStorage 和/或 localStorage。

状态只是使用 AJAX 加载的代码的副本吗?或者它只是该代码的表示,因此可以调用它?

任何对此的见解都将受到赞赏!

最佳答案

状态对象是任何 Javascript 对象——它可以是单个变量,也可以是函数和值的巨大散列图。它是您想要用来表示应用程序在那个时间点的“状态”的任何数据。像这样的事情很常见:

var viewModel = {
    title: 'FAQs',
    url: 'faqs.html',
    favouriteColor: 'green',
    stepsCompleted: 4
};

history.pushState(viewModel, viewModel.title, viewModel.url);

这基本上是创建一个对象,其中包含“记住”并在以后恢复状态所需的任何东西 - 例如,如果用户正在遵循向导式的逐步表单等。

第二个参数,title,目前在很大程度上被浏览器忽略,但可能用于向前/向后导航等用例,其中可能需要更新页面标题。

关于jquery - History.js 和状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12849362/

相关文章:

javascript - 确定元素是否包裹在 float 元素周围

javascript - tinymce 不会使用动态加载的 html 再次启动编辑器

javascript - 让 ajax 在 JSBIN 上工作

jquery - 返回 HTML 时出现错误 : Syntax error, 无法识别的表达式

javascript - Ajax Jquery 将变量传递给 PHP 文件

javascript - 使用带有缩放和滚动功能的网页加载 IFrame

具有不同大小框的 HTML/CSS 网格布局?

jquery - 仅在顶级 <li> 中查找文本并应用类

javascript - spring mvc 环境中的 jQuery ajax 调用数据参数问题

javascript - Symfony2 可以用 ajax 刷新 twigs block 吗?