Javascript 在html中,window.onpopstate在加载和返回箭头时都会触发-如何知道?

Javascript 在html中,window.onpopstate在加载和返回箭头时都会触发-如何知道?,javascript,html,dom,popstate,Javascript,Html,Dom,Popstate,在我的页面上,window.onpopstate 我希望捕获用户的返回箭头并运行我自己的例程 但是window.onpopstate在1)页面初始加载、2)重新加载以及3)用户按下后退箭头时触发 我可以创建一个状态空间标志并检查它。但更自然的是从事件本身来决定发生了什么 是否有任何内在的方法来确定事件是从加载还是返回按钮触发的?当我检查这两个事件时,它们看起来几乎相同。当用户在同一文档的两个历史记录条目之间导航时,即每次活动历史记录条目更改时,都会触发onpopstate事件 当点击后退按钮、页

在我的页面上,
window.onpopstate

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

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

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


是否有任何内在的方法来确定事件是从加载还是返回按钮触发的?当我检查这两个事件时,它们看起来几乎相同。

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

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


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

您可以补偿浏览器中的popstate错误。当有人使用我的编辑器并点击退格按钮时,有时会触发导航(这不应该是默认的,但不是每个人都适合他们的位置),所以我取消它(是的,你可以),然后用
history.go(1)修复地址栏。我不会在这里发布依赖关系相关的代码,因为不同的人会在不同的上下文中需要它,但它是您需要的基础

window.onpopstate = function(e)
{
 if (id_('editor') && is_node_parent(document.activeElement,id_('editor')))
 {
  e.preventDefault();
  history.go(1);
 }
}

你对如何获取上下文有什么想法:加载、重新加载或退格?