Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用浏览器触发脚本(js或jQuery)';s";“后退”;功能_Javascript_Jquery_Firefox_Safari_Back Button - Fatal编程技术网

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来解决这个问题吗?也许这更合适。