History.js and states
有人可以向我解释情况吗?
例如,带有history.js插件。
1 | History.pushState({state:1},"State 1","?state=1"); // logs {state:1},"State 1","?state=1" |
我理解最后一个参数,因为它是被推送到地址栏的URL,但是我不知道前两个参数。理解这些内容将有助于我在自己的网站中实现history.js,因为我在后退/前进导航时遇到了麻烦。
在Mozilla开发人员网站上显示:
state对象-状态对象是一个JavaScript对象,它与pushState()创建的新历史记录条目相关联。每当用户导航到新状态时,都会触发popstate事件,并且该事件的state属性包含历史记录条目的状态对象的副本。
状态对象可以是任何可以序列化的对象。由于Firefox将状态对象保存到用户的磁盘上,以便在用户重新启动浏览器后可以将其还原,因此我们对状态对象的序列化表示施加了640k个字符的大小限制。如果将序列化表示形式大于此形式的状态对象传递给pushState(),则该方法将引发异常。如果您需要更多空间,建议您使用sessionStorage和/或localStorage。
仅声明使用AJAX加载的代码的副本吗?还是仅仅是该代码的表示形式,以便可以调用它?
对此有任何见识,不胜感激!
状态对象是任何Javascript对象-它可以是单个变量,也可以是巨大的函数和值的哈希表。您想要在那个时间点使用任何数据来表示应用程序的"状态"。这样的事情很常见:
1 2 3 4 5 6 7 8 | var viewModel = { title: 'FAQs', url: 'faqs.html', favouriteColor: 'green', stepsCompleted: 4 }; history.pushState(viewModel, viewModel.title, viewModel.url); |
这基本上是在创建一个对象,该对象具有"记住"并在以后恢复状态所需的任何内容-例如,如果用户遵循向导式的逐步说明或类似形式。
第二个参数