Получить запись истории, которая была добавлена ​​на событие onpopstate - PullRequest
3 голосов
/ 19 июня 2019

У меня есть слушатель onpopstate события. Я хочу получить запись истории, которая появилась без путешествий по истории. Я мог бы сделать history.forward() и получить состояние, но это вызовет побочные эффекты, которые я не хочу видеть.

window.addEventListener('popstate', (event) => {
    prevHistoryRecord = // How to get it without history.forward()
});

1 Ответ

0 голосов
/ 20 июня 2019

Я предполагаю, что вы хотите получить доступ к состоянию, добавленному / измененному платформой или другой частью вашего приложения. В этом случае вы можете переписать функции истории и прослушать, сохранить изменения состояния в объекте, который вам доступен

const historyState = []
const fn = history.pushState.bind(history)
history.pushState = function() {
  console.log('Push state', arguments)
  historyState.push({ args: arguments })
  fn.apply(history, arguments)
}
history.pushState('arg1', 'arg2')

Вам следует перезаписать объект истории, прежде чем он будет использован в вашем случае. Таким образом, у вас будет доступ к копии истории состояния. Это также может быть доступно в истории, но я понятия не имею, если вы можете достичь этого.

...