1.着手寫H5代碼有一段時間,昨天遇到了一個"神坑"-關於Html中的History對象應用在不同瀏覽器效果不一致的問題.
2.問題描述:
1)當調用window.history.go(-1)實現頁面返回時,在不同瀏覽器上都會真正的重新加載(重新發送網絡請求而不是發送網絡請求時讀取瀏覽器的緩存)"目標頁面"的網絡請求.
2)當調用window.history.go(-2)實現返回兩級時,在iphone的safari上會"重新加載"(重新發送網絡請求但不是真正的發送網絡請求而是讀取瀏覽器的緩存),但是需要在返回到"目標網頁真正的刷新目標網頁.
3.解決方法:
1)一開始的思路是記錄離開"目標網頁" 時的數據,當go(-2)返回到"目標網頁"時對數據做相應的加減操作.但是對於復雜的數據類型怎么破.(這種思路用sessionStorage實現的)
2)真正的問題在於再次回到"目標頁面"時會讀取瀏覽器緩存,追根溯源,想到了發送網絡請求的ajax方法,有沒有設置請求不緩存的configuration.結果發現$.ajax(),中有相應的配置選項:cache
當cache為true時會對這次請求以及請求對應的響應進行緩存.為false時不緩存.這樣就解決了返回到"目標頁面"時讀取緩存的問題.
4.部分代碼展示:
$.ajax({
type: "post",
cache: false,
timeout: 60000,
url: url,
.......
5.下一篇要整理一個比較重要的知識點.結合我的ios開發經驗,關於web(HTML)中的事件捕獲,冒泡模型與ios的事件分發與響應者鏈的相關性整理.