2015-06-30 254 views
0

我不想检测用户是否按下后退按钮我的页面JavaScript后退按钮事件

我想检测用户是否按下了其他人的页面上的后退按钮,并且已回到我的页面。

我需要重新加载页面,如果是这样的话。

+0

不幸的是,我不认为有这样的事件,甚至有没有为自己的页面上的返回按钮,一个单独的事件。我认为你必须存储会话和用户重定向到的地址,然后在一定的时间范围内检查同一用户是否来自同一个域,但这听起来很复杂。 – adeneo

+0

这里的顶部答案http://stackoverflow.com/questions/829046/how-do-i-detect-if-a-user-has-got-to-a-page-using-the-back-button建议使用一个隐藏的表单,因为这些值被保留 – bbill

+1

尝试'卸载'事件:https://developer.mozilla.org/en-US/docs/Web/Events/unload。也看到这个类似的问题:http://stackoverflow.com/questions/1341089/using-meta-tags-to-turn-off-caching-in-all-browsers – Pluto

回答

1

你可以玩window.history,也可以在本地为localstorage或cookie存储用户的一些值。 (仅供参考,MDN article

例如,检查用户在您的页面上时的值window.history.length;然后在其他地方导航;然后点击“返回”返回到您的上一页。现在再比较window.history.length - 这是不同的(至少对我来说,在Chrome中)。

TL; DR - 这不会是一个万无一失的方法,但它可能是一个很好的黑客攻击你。

+0

是的,那很好。我可以比较localStorage.historyLength和window.history.length。适合我! –

+0

除非它们再次向前和向后按压,否则它不起作用。 –

+0

是的,的确如此。我不知道这可能是多么的可能...但是考虑到其他可能的答案(通过在OP的评论中发布的链接),似乎没有一种完全可靠的方法来实现这一点。你可以结合方法。 – arthurakay

0

这是我最终做的。它的工作原理,但让我知道,如果你有一个更好的解决方案:

window.addEventListener('unload', unload) 
function unload() { 
    localStorage.setItem('reload',1) 
} 

var reload = localStorage.getItem('reload') 
reload = parseInt(reload,10) 
if (reload) { 
    localStorage.setItem('reload',0) // false doesn't work here. 
    window.removeEventListener('unload', unload) 
    window.location.reload() 
}