【发布时间】:2015-11-19 12:41:29
【问题描述】:
我有以下简单的 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 火灾pageshow 提供的页面似乎只有一次。
这是 Safari 上的预期行为吗?有办法解决吗?
【问题讨论】:
-
我不明白你为什么使用
pageshow。你能用$(function()){} -
或
$( document ).ready() -
似乎有一个未解决的错误:bugs.webkit.org/show_bug.cgi?id=156356 还没有找到解决方法...
-
@GeorgiiIvankin 你找到解决方法了吗?似乎是 safari 10(和最近的 IOS)上的一个错误
-
@ErikBaan 不,很遗憾,我没有。
标签: javascript jquery safari bfcache