我在 JavascriptMVC 应用程序中使用 window.history
来为每个 Controller 启用后退/前进/刷新功能。每次加载新 Controller 时,我都会使用 window.history.pushState
将新状态添加到历史记录中。然后在返回/刷新时,我使用保存的状态并重用数据再次构建 Controller 。
除特定场景下的一个问题外,整个想法工作正常。我收到以下错误:
Failed to execute 'pushState' on 'History': An object could not be cloned.
在其他情况下添加相同的数据没有问题。什么会导致此错误? 感谢您的协助。
最佳答案
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
“状态对象可以是任何可以被序列化的东西。因为 Firefox 将状态对象保存到用户的磁盘中,以便在用户重新启动浏览器后可以恢复它们,我们对一个序列化表示施加了 640k 个字符的大小限制state 对象。如果将序列化表示大于此的状态对象传递给 pushState(),该方法将抛出异常。如果您需要比这更多的空间,建议您使用 sessionStorage 和/或 localStorage。"
看起来简单的答案是您传入的状态可能序列化为大于 640k。我刚刚遇到了这个错误,我几乎可以肯定这就是原因。
关于javascript - Failed to execute 'pushState' on 'History' error when using window.history.pushState 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24425885/