Кропотливо, у меня есть страница, которая превышает ограничение на количество символов в IE11.Я сделал операцию с подстрокой, чтобы получить точное количество символов, так как я нигде не мог его найти.Ответ в том, что (по крайней мере, в IE11) 524282 символа разрешено передавать в pushState / replaceState.
Я обработал это с помощью следующего кода:
function pushState(data, title, url) {
if (data.length > 524282) {
//can't push the data to the History API--pass null
history.pushState(null, title, url);
history.replaceState(null, title, url);
}
else {
history.pushState(data, title, url);
history.replaceState(data, title, url);
}
document.title = title;
}
Я вызываю beforeNavigate для сохранения любого текущегоинформация о положении или изменения состояния, сделанные пользователем перед загрузкой нового контента с помощью запроса ajax.
function beforeNavigate(){
if ($("#container").html().length <= 524282) {
//save current state to history before navigating via ajax
history.replaceState($("#container").html(), document.title, window.location.pathname);
}
}
Обрабатывайте нажатие кнопок «назад» и «вперед», прослушивая popstate.Если мы передали значение NULL для данных, то e.state вернет значение NULL, и нам нужно загрузить сохраненный URL через запрос AJAX.