Что такое stateObj, переданное history.pushState и что оно делает?
stateObj
history.pushState
Например, history.pushState(stateObj, title, url);
history.pushState(stateObj, title, url);
Объект состояния, , как определено в спецификации, - это любой объект, который вы, автор, хотите связать с этим состоянием:
Страницы могут добавлять объекты состояния междуих запись в истории сеанса и следующая («прямая») запись.Затем они возвращаются в сценарий, когда пользователь (или сценарий) возвращается в историю
MDN имеет более практичное (специфичное для Firefox) определение:
Объект состояния может быть любым, что вы можете передать в JSON.stringify.Поскольку Firefox сохраняет объекты состояния на диск пользователя, чтобы их можно было восстановить после того, как пользователь перезапустил свой браузер, мы накладываем ограничение размера в 640 КБ на представление JSON объекта состояния.