我有以下简单的JavaScript,我需要在页面重新加载时重新初始化一些变量,特别是当页面从Safari BFCache提供时:
jQuery(window).bind('pageshow', function(event) {
// I could inspect event.originalEvent.persisted here to check for BFCache hits,
// but it isn't required in this instance.
// Do some initialisation here
});
假设用户遵循以下路径,导航到页面B和C,在每个页面之后浏览(即使用后退按钮)到页面A:
A - > B - > A - > C - >甲
pageshow
处理程序仅在第一次和第二次访问A时触发,即初始页面加载和第一次BFCache加载。所以从本质上讲,似乎只有一次BFCache会激活pageshow
的页面。
这是Safari上的预期行为,有没有解决方法呢?
答案 0 :(得分:1)
我似乎通过绑定到popstate
事件来解决问题:
jQuery(window).bind('popstate', function(event) {
// Do some initialisation here
});
在活动历史记录条目更改时触发。这似乎始终如一,而不仅仅是一次,因此无论用户何时登陆,都可以实现在用户登陆页面时执行重新初始化的目标。
答案 1 :(得分:0)
要停用BFCache
,您可以在html正文中添加onunload=""
属性。
<body onunload=""></body>