当通过浏览器的“后退”按钮或键盘命令到达页面时,我找不到执行脚本的方法。 (背景:我需要知道是否使用浏览器的“后退”按钮或键盘命令打开页面。然后我可以检查存储的 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(使用前将#替换为@)