Safari上的pageshow活动

我有以下简单的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 – > A.

pageshow处理程序仅在第一次和第二次访问A时触发,即初始页面加载和第一次BFCache加载。 所以从本质上讲,似乎只有一次从BFCache fire pageshow页面。

这是Safari上的预期行为,有没有办法绕过它?

我似乎通过绑定到popstate事件解决了这个问题:

 jQuery(window).bind('popstate', function(event) { // Do some initialisation here }); 

每当活动历史记录条目更改时触发。 这似乎始终如一,而不是仅仅一次,因此无论用户何时到达,都可以实现在用户登陆页面时执行重新初始化的目标。

要禁用BFCache ,可以在html主体上添加onunload=""属性。

  
Interesting Posts