我希望每次用户单击后退按钮或调用history.back()时都会调用pop状态事件。根据我的阅读,history.back()等同于使用浏览器上的后退按钮。
我遇到这种情况,我在打开叠加层时将状态推入历史堆栈,并在用户单击关闭按钮关闭叠加层时调用history.back()。这相当于单击后退按钮。
浏览器后退按钮始终正常工作 - 即它触发popstate事件,并正确执行我的自定义popstatehandler。但是,history.back()函数并不总是调用popstate事件(因此不会关闭叠加层)。
这表明两者之间存在一些内在差异,但我不知道那是什么!
当我通过单击链接在新选项卡中打开页面打开相关页面时,才会出现这种神秘的错误行为。直接打开页面会使popstate事件正常启动。