使用浏览器的 "BACK" 函数触发脚本(js 或 jQuery)

Triggering a script (js or jQuery) using browser's "BACK" function

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

例如,如果我将其放入我的页面代码中

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

,当我通过 link 加载页面或通过在地址栏中输入 URL 直接打开它时,将显示警告。

但是当我通过“后退”按钮进入该页面时,不会出现此警告。

我使用 $(window).on("load", function() {...$(window).on("navigate", function () {... 进行了相同的尝试 - 也没有成功...

编辑/添加:

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

所以我搜索了避免缓存内容的解决方案,但到目前为止我发现并尝试过的方法(很多!)也没有奏效...

在阅读了 很多 的帖子并尝试了其中的解决方案并将问题缩小到浏览器问题之后,我发现了这个答案,它也强制重新加载页面Safari(显然还有 Firefox/Mac):

本质上,当通过 Safari 上的后退按钮到达页面时,此 jQuery 代码会以原始状态重新加载页面,这也允许在页面加载时触发任何所需的脚本:

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