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