在标准的 Java / SpringMVC / JSP / jQuery web-app 中,我试图检测“Back”(或 history.go(-1))事件,以便在以下情况下刷新(AJAX)摘要组件/面板内容我返回一个页面(我们可以在其中更改摘要组件显示的后端数据)。
我在 JavaScript 中尝试了以下操作(按照 StackExchange 上的一些帖子重新了解如何实现这一点):
<script type="text/javascript">
$(document).ready(function() {
window.onpageshow = function(event) {
console.log("Event:");
console.dir(event);
if (event.persisted) {
alert("non-jQuery - back to page - loaded from bfcache");
} else {
alert("non-jQuery - loaded page from server");
}
};
$(window).on("pageshow", function(event){
console.log("Event:");
console.dir(event);
if (event.originalEvent.persisted) {
alert("jquery - back to page - loaded from bfcache");
} else {
alert("jquery - loaded page from server");
}
});
});
</script>
我正在运行 OpenSUSE Linux,并在 FireFox 和 Chrome(最新版本)上进行了尝试,但每次将事件的persisted
属性设置为false
(我可以在 JavaScript 控制台和从上述代码中弹出的警报中看到这一点)。每次,我的意思是,无论它是从服务器加载还是通过后退按钮(或“后退”链接)再次显示。
如果页面通过“后退”按钮或history.go(-1)
调用显示,我的意图是进行 AJAX 调用以使用来自服务器的更新数据重新加载摘要组件/面板。
我还尝试设置一个卸载处理程序(什么都不做)以防止页面被放入 bfcache 但它似乎仍然显示一个 bf-cached 版本并且event.persisted
(or event.originalEvent.persisted
) 设置为false
.
此属性是否在 Linux 上正确管理?我在我的代码中做一些愚蠢的事情吗?任何帮助或想法将不胜感激,谢谢!