通过浏览器的“BACK”功能加载页面时触发 onload 脚本(js 或 jQuery)

2024-05-07

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

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

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

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

但此警报将not当我通过“后退”按钮进入该页面时出现。

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

编辑/添加:

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

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


看完之后lots帖子并尝试其中的解决方案并将问题范围缩小到浏览器问题,我发现了这个答案,这迫使页面也在 Safari 中重新加载(显然还有 Firefox/Mac):

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

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

$(window).bind("pageshow", function(event) {
    if (event.originalEvent.persisted) {
        window.location.reload() 
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过浏览器的“BACK”功能加载页面时触发 onload 脚本(js 或 jQuery) 的相关文章

随机推荐