我有一个onpopstate
事件的侦听器。我想获取没有在历史中旅行而弹出的历史记录。我可以做history.forward()
并获得状态,但这会导致我不希望看到的副作用。
window.addEventListener('popstate', (event) => {
prevHistoryRecord = // How to get it without history.forward()
});
答案 0 :(得分:0)
我假设您要访问由框架或应用程序的其他部分添加/修改的状态。在这种情况下,您可以覆盖历史记录功能,并在对象中监听状态变化并将其存储在您可以访问的对象中
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')
在您的案例中使用历史对象之前,您应该覆盖它。因此,您将有权访问历史记录状态的副本。 它也可能在“历史记录”中也可以访问,但是我不知道是否可以到达。