javascript - yes - 移動Safari後退按鈕



javascript prompt (1)

這是由後向緩存引起的。 當用戶導航時,它應該保存完整的頁面狀態。 當用戶使用後退按鈕頁面導航時,可以非常快速地從緩存加載。 這與僅緩存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() { });

這個問題在這裡已有答案:

我發現的問題與這個問題非常相似,只是台式機上的Safari似乎已經解決了這個問題。 基本上,問題是:當客戶端瀏覽移動版Safari並且頁面在pagea.html上執行javascript函數時,然後導航到pageb.html,然後按後退按鈕返回pagea.html,javascript函數當客戶端按下後退按鈕返回pagea.html時,將不會運行。 它將跳過javascript調用。

我已經嘗試過上面鏈接中提到的解決方案,但似乎沒有什麼適用於移動Safari。 還有其他人遇到過這個bug嗎? 你是怎麼處理的呢?





safari