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