在 pushState() 中人为触发 'onpopstate' 会导致步骤丢失

作者: martin-g创建于 2011年4月8日更新于 2019年4月30日
标签resolved-in-devimprovement

你好, 最初我将问题发布在 http://getsatisfaction.com/balupton/topics/history_js_back_button_goes_two_states_steps_back。 经过一些研究,我发现问题是由 History.pushState() 方法体末尾手动触发的 onpopstate 事件引起的。 触发该事件会过早消耗状态,而当用户单击浏览器的后退按钮时,就没有通知最后一次注册的事件。 也就是说,有一个单个链接,单击该链接会推出新的状态。 单击该链接三次,然后单击浏览器的后退按钮,将会两次调用我的 statechange 处理程序 - 一次是第二次单击时,一次是第一次单击时,但不会调用第三次单击。

内容来源: browserstate/history.js