将当前 js 对象保存在 history.pushState 中

Save current js object in history.pushState

本文关键字:存在 history pushState 保存 对象 js      更新时间:2023-09-26

我正在尝试将我当前的js对象保存在历史记录中。

history.pushState($(this)[0],'List',window.location.href);

但是我收到错误

DataCloneError: The object could not be cloned. history.pushState($(this)[0],'List',window.location.href);

https://developer.mozilla.org/en-US/docs/Web/API/History_API

状态对象可以是可以序列化的任何内容。由于 Firefox 将状态对象保存到用户的磁盘,以便在用户重新启动浏览器后可以恢复它们,因此我们对状态对象的序列化表示形式施加了 640k 个字符的大小限制。如果将序列化表示形式大于此值的状态对象传递给 pushState(),该方法将引发异常。如果您需要比这更多的空间,建议您使用 sessionStorage 和/或 localStorage。

所以你正在使用JSON.stringify对数据进行序列化。

 history.pushState(JSON.stringify($(this)[0]),'List',window.location.href);