在我的页面上,我有一个听众window.onpopstate
我希望捕获用户的后退箭头并运行我自己的例程
但window.onpopstate
在 1) 初始加载页面、2) 重新加载以及 3) 用户按下后退箭头时触发
我可以创建一个状态空间标志并检查它。但更自然的是从事件本身来确定发生了什么。
有什么内在方法可以确定事件是从加载按钮还是后退按钮触发的?当我检查这两个事件时,它们看起来几乎相同。
在我的页面上,我有一个听众window.onpopstate
我希望捕获用户的后退箭头并运行我自己的例程
但window.onpopstate
在 1) 初始加载页面、2) 重新加载以及 3) 用户按下后退箭头时触发
我可以创建一个状态空间标志并检查它。但更自然的是从事件本身来确定发生了什么。
有什么内在方法可以确定事件是从加载按钮还是后退按钮触发的?当我检查这两个事件时,它们看起来几乎相同。
当用户在同一文档的两个历史条目之间导航时触发该window.onpopstate
事件,即每次活动历史条目更改时。
单击后退按钮、页面加载以及页面重新加载时会触发它(Firefox 在页面加载时不会发出此事件)。因此,您看到的行为是有意的。
而且,对于后退按钮,我想没有任何方法可以使用此事件检测后退按钮单击。
您可以弥补浏览器中的 popstate 错误。当有人使用我的编辑器并点击 Backspace 按钮时,有时会触发导航(这不应该是默认设置,但不是每个人都有资格担任他们的职位)所以我取消它(是的,你可以)然后用history.go(1);
. 我不会在这里发布依赖相关的代码,因为不同的人会在不同的上下文中需要它,但它构成了你需要的基础。
window.onpopstate = function(e)
{
if (id_('editor') && is_node_parent(document.activeElement,id_('editor')))
{
e.preventDefault();
history.go(1);
}
}