移动野生动物园后退按钮

Mobile Safari back button

本文关键字:按钮 动物园 移动      更新时间:2023-09-26

我发现的问题与这个问题非常相似,只是桌面上的Safari似乎已经解决了这个问题。本质上,问题是这样的:当客户端在移动 safari 上浏览并且页面在 pageA.html 上执行 javascript 函数,然后导航到pageB.html,然后按后退按钮返回pageA.html,当客户端按下后退按钮返回pageA.html时,javascript 函数不会运行。它将跳过javascript调用。

我已经尝试了上面链接中提到的解决方案,但似乎没有什么适用于移动 Safari。还有其他人遇到过此错误吗?你是怎么处理的?

这是

由后向缓存引起的。当用户导航离开时,它应该保存页面的完整状态。当用户使用后退按钮导航回来时,页面可以从缓存中非常快速地加载。这与仅缓存HTML代码的普通缓存不同。

当为 bfcache 加载页面时onload不会触发事件。相反,您可以检查onpageshow事件的 persisted 属性。它在初始页面加载时设置为 false。当页面从 bfcache 加载时,它被设置为 true。

window.onpageshow = function(event) {
    if (event.persisted) {
        alert("From back / forward cache.");
    }
};

由于某种原因,jQuery 在事件中没有此属性。不过,您可以从原始事件中找到它。

$(window).bind("pageshow", function(event) {
    if (event.originalEvent.persisted) {
      alert("From back / forward cache.");
    }
});

这些问题的快速解决方案是在按下后退按钮时重新加载页面。但是,这会抵消后退/前向缓存将产生的任何积极影响。

window.onpageshow = function(event) {
    if (event.persisted) {
        window.location.reload() 
    }
};

作为旁注,您可以看到许多页面使用空onunload处理程序作为解决方案。自iOS5以来,这一直不起作用。

$(window).bind("unload", function() { });