2016-05-15 41 views
0

当通过浏览器的BACK按钮或键盘命令到达页面时,我无法找到执行脚本的方法。 (背景:我需要知道是否使用浏览器的BACK按钮或键盘命令打开页面,然后我可以检查存储的sessionStorage变量并触发一些适当的东西)。使用浏览器的“BACK”功能触发脚本(js或jQuery)

如果,例如,我把这个在我的网页代码

<script> 
    $(document).ready(function() { 
    alert("YES!"); 
    /* in the real situation: do something */ 
    }) 
</script> 

,当我通过链接加载该页面会显示警告或通过键入其网址到地址栏直接打开它。

但是,当我通过BACK按钮来到该页面时,此警报将会出现而不是

我尝试使用$(window).on("load", function() {...$(window).on("navigate", function() {...一样的 - 没有成功要么...

编辑/添加:

我刚刚意识到浏览器在这方面表现不同:铬,歌剧,IE和Firefox的Windows将正确地重新加载页面(并触发document.ready()onload()事件),但Firefox Mac和Safari不会 - 它们从缓存中加载整个页面,而不触发document.ready()onload()。 (我还没有尝试过移动浏览器)

因此,我搜索了避免缓存内容的解决方案,但我发现并尝试到目前为止(这是很多!)也没有工作...

+0

可能的重复: http://stackoverflow.com/questions/通过Safari浏览器上的后退按钮也允许触发页面加载任何所需的脚本到他那里去的时候重新加载页面的原始状态26650496 /如何检测,如果用户有去使用浏览器后退按钮 http://stackoverflow.com/questions/2008806/how如果用户点击后退按钮 –

+0

@ ZverevEugene这是*不*重复:您引用的问题甚至没有答案,只是稍后在问题中添加了解决方法,以一种隐藏的形式,OP承认自己甚至不理解它。 – Johannes

+0

然后看看第二篇文章。无论如何,关于完全相同的问题有很多问题。我刚刚提到前两个。 –

回答

0

阅读后很多的帖子和尝试在那里的解决方案,并缩小到一个浏览器问题,我发现这个答案,这迫使页面重新加载在Safari(显然也Firefox/Mac):

https://stackoverflow.com/a/13123626/5641669

从本质上讲,这个共同的jQuery

$(window).bind("pageshow", function(event) { 
    if (event.originalEvent.persisted) { 
     window.location.reload() 
    } 
}); 
相关问题