javascript - Failed to execute 'pushState' on 'History' error when using window.history.pushState 函数

标签 javascript html javascriptmvc

我在 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/

相关文章:

javascript - 选择当前菜单项时,其他菜单项淡出

html - 在 PhoneGap 中将 Jquery 中的值从一个 html 类传递到另一个 html 类

html - 用于测量 html 渲染时间的工具

javascript - 服务器端与客户端 (AJAX) 加载

javascript - 使用 javascript 删除 iframe

javascript - 启用 iPad VoiceOver 后,是什么导致 Safari 网页进入空白、灰色屏幕?

javascript - 如何使用 JavaScript 更新或添加数组中的值?

razor - 什么时候在前端和后端实现逻辑?

javascript - 在 foreach 循环中调用 JavaScript 函数

javascript - Kendo UI 堆叠条形图自定义工具提示