Javascript 使用浏览器触发脚本(js或jQuery)';s";“后退”;功能
当通过浏览器的后退按钮或按键命令到达页面时,我找不到执行脚本的方法。(背景:我需要知道是否使用浏览器的后退按钮或键命令打开了页面。然后我可以检查存储的会话存储变量并触发一些适当的内容) 例如,如果我将其放入我的页面代码中Javascript 使用浏览器触发脚本(js或jQuery)';s";“后退”;功能,javascript,jquery,firefox,safari,back-button,Javascript,Jquery,Firefox,Safari,Back Button,当通过浏览器的后退按钮或按键命令到达页面时,我找不到执行脚本的方法。(背景:我需要知道是否使用浏览器的后退按钮或键命令打开了页面。然后我可以检查存储的会话存储变量并触发一些适当的内容) 例如,如果我将其放入我的页面代码中 <script> $(document).ready(function() { alert("YES!"); /* in the real situation: do something */ }) </script> $
<script>
$(document).ready(function() {
alert("YES!");
/* in the real situation: do something */
})
</script>
$(文档).ready(函数(){
警惕(“是的!”);
/*在真实情况下:做点什么*/
})
,当我通过链接加载页面或通过在地址栏中键入其URL直接打开页面时,将显示警报
但当我通过后退按钮进入该页面时,此警报将不会出现
我使用$(窗口)尝试了同样的方法。在(“加载”,函数(){…
和$(窗口)。在(“导航”,函数(){…
)-也没有成功
编辑/添加:
我刚刚意识到浏览器在这方面的表现有所不同:Chrome、Opera、IE和Firefox Windows将正确地重新加载页面(并触发document.ready()
和onload()
事件),但Firefox Mac和Safari不会这样做-它们从缓存加载整个页面,而不会触发document.ready()
或onload()
(我还没有尝试过移动浏览器)
因此,我搜索了避免缓存内容的解决方案,但迄今为止我所发现和尝试的(很多!)也没有奏效…在阅读了大量文章并尝试了其中的解决方案,并将问题缩小到浏览器问题后,我发现了这个答案,这迫使页面也在Safari中重新加载(显然还有Firefox/Mac):
基本上,这个jQuery代码通过Safari上的back按钮以原始状态重新加载页面,这也允许在pageload上触发任何所需的脚本:
$(window).bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
window.location.reload()
}
});
可能的重复:@ZverevEugene这不是重复:你引用的问题甚至没有答案,只是后来在问题中添加了一些变通方法,以隐藏的形式,OP承认他自己甚至不理解。那么看看第二篇文章。无论如何,有相当多的问题完全相同重要的是。我刚才提到了前两个。@ZverevEugene,其中任何一个都没有明确的答案……你考虑过通过设置某种会话或cookie来解决这个问题吗?也许这更合适。