Не удалось выполнить 'pushState' при ошибке "History" при использовании функции window.history.pushState

Я использую window.history в приложении JavascriptMVC для включения функций back/forward/refresh для каждого контроллера. Каждый раз, когда я загружаю новый контроллер, я использую window.history.pushState, чтобы добавить новое состояние в историю. И затем на back/refresh я использую сохраненное состояние и повторно использую данные для сборки контроллера снова.

Вся идея прекрасно работает, за исключением одной проблемы по конкретному сценарию. Я получаю следующую ошибку:

Не удалось выполнить 'pushState' в 'History': объект не может быть клонировали.

Те же данные добавляются без проблем в другой сценарий. Что может вызвать эту ошибку? Спасибо за помощь.

Ответ 1

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

"Объект состояния может быть любым, что может быть сериализовано. Поскольку Firefox сохраняет объекты состояния на пользовательский диск, чтобы их можно было восстановить после перезапуска браузера, мы накладываем ограничение размера на 640 тыс. символов в сериализованном представлении Если вы передаете объект состояния, сериализованное представление которого больше, чем this, чтобы pushState(), метод генерирует исключение. Если вам нужно больше места, чем это, вам рекомендуется использовать sessionStorage и/или localStorage."

Похоже, простой ответ заключается в том, что возможное состояние, в котором вы проходите, сериализуется до более чем 640 тысяч. Я просто столкнулся с этой ошибкой, и я почти уверен, что это причина.