2

在我的页面上,我有一个听众window.onpopstate

我希望捕获用户的后退箭头并运行我自己的例程

window.onpopstate在 1) 初始加载页面、2) 重新加载以及 3) 用户按下后退箭头时触发

可以创建一个状态空间标志并检查它。但更自然的是从事件本身来确定发生了什么。

有什么内在方法可以确定事件是从加载按钮还是后退按钮触发的?当我检查这两个事件时,它们看起来几乎相同。

4

2 回答 2

1

当用户在同一文档的两个历史条目之间导航时触发该window.onpopstate事件,即每次活动历史条目更改时。

单击后退按钮、页面加载以及页面重新加载时会触发它(Firefox 在页面加载时不会发出此事件)。因此,您看到的行为是有意的。

而且,对于后退按钮,我想没有任何方法可以使用此事件检测后退按钮单击。

于 2013-03-25T05:23:35.750 回答
0

您可以弥补浏览器中的 popstate 错误。当有人使用我的编辑器并点击 Backspace 按钮时,有时会触发导航(这不应该是默认设置,但不是每个人都有资格担任他们的职位)所以我取消它(是的,你可以)然后用history.go(1);. 我不会在这里发布依赖相关的代码,因为不同的人会在不同的上下文中需要它,但它构成了你需要的基础。

window.onpopstate = function(e)
{
 if (id_('editor') && is_node_parent(document.activeElement,id_('editor')))
 {
  e.preventDefault();
  history.go(1);
 }
}
于 2017-07-22T02:21:25.327 回答