1. 程式人生 > >SPA 單頁面應用程序。

SPA 單頁面應用程序。

his 頁面 過去的 兼容 獲取 應用 ajax請求 length 方法

  看到這個問題,先說下自己的理解到的程度,再去參考做修正,爭取這一次弄懂搞清楚

  自己的理解: 單頁面應用程序,解決瀏覽器獲取數據刷新頁面的尷尬,通過ajax請求獲取數據達到異步更新視圖的按鈕,原理的實現由兩種,

  其一,通過hash值的變化,綁定onhashchange的回調函數更新視圖,因為hash值的變化不會讓頁面失去響應,不會向服務器發送請求。下面列出幾種可能改變hash值的方法,改變url中的hash。瀏覽器回退按鈕可能出現歷史記錄中的url包含的hash值不一樣,都將觸發該事件;還有觸發帶瑁點的鏈接改變,再通過js直接獲取location.hash來改變導致事件觸發。

  其二,通過同H5 historyAPI 來添加向瀏覽器的歷史棧中添加記錄。過去的方法只有通過back,forward,go三個方法來實現前進後退和跳轉。到H5多了pushState,replaceState方法。pushState只是單純的添加並不跳轉到該記錄,而replaceState,替換記錄整個歷史記錄的length長度不變化。 hitstory.pushState(data,title,url),向url裏寫入第一個參數數據,並指定title的值。執行完歷史棧中添加了一條記錄,通過執行一次popstate事件其中popstate用來監聽歷史記錄的變化,可以理解為監聽瀏覽器後退、前進的操作。綁定onpopstate事件後執行location.reload(); 因為兼容性問題,History.js用於修補。

SPA 單頁面應用程序。