history.pushstate和history.replacestate的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了history.pushstate和history.replacestate的区别相关的知识,希望对你有一定的参考价值。

参考技术A 对于不支持H5的浏览器:
用location.hash直接修改hash值的方式来代替pushState。
没找到可以用什么方式来代替history.replaceState。

传递给 history.pushState 的状态对象是啥,它有啥作用?

【中文标题】传递给 history.pushState 的状态对象是啥,它有啥作用?【英文标题】:what is the state object passed to history.pushState and what does it do?传递给 history.pushState 的状态对象是什么,它有什么作用? 【发布时间】:2011-07-12 03:08:27 【问题描述】:

传递给history.pushStatestateObj 是什么,它有什么作用?

例如,history.pushState(stateObj, title, url);

【问题讨论】:

【参考方案1】:

状态对象as defined by the spec, 是您(作者)想要与该状态关联的任何对象:

页面可以在会话历史记录中的条目和下一个(“前进”)条目之间添加状态对象。然后当用户(或脚本)返回历史记录时,这些将返回给脚本

MDN 有一个更实用(特定于 Firefox)的定义:

状态对象可以是您可以传递给 JSON.stringify 的任何东西。因为 Firefox 将状态对象保存到用户的磁盘,以便在用户重新启动浏览器后可以恢复它们,所以我们对状态对象的 JSON 表示形式施加了 640k 个字符的大小限制。

【讨论】:

以上是关于history.pushstate和history.replacestate的区别的主要内容,如果未能解决你的问题,请参考以下文章

前端路由的实现 —— History的pushState和replaceState用法

为 Angular 2 配置 history.pushState

使用 window.history.pushState 函数时无法在“历史”错误上执行“pushState”

使用ajax和history.pushState无刷新改变页面URL

window.history.pushState 刷新浏览器

传递给 history.pushState 的状态对象是啥,它有啥作用?