學習HTML5 history API

html5 在 history 對象上添加幾個新的方法、事件、屬性,用以加強開發者對於瀏覽器歷史記錄的控制。大致上說,新的API能夠幫助咱們在無刷新的狀況下改變瀏覽器的url,新增或者替換以前的歷史記錄。建議先看看這個示例,
具體的文檔推薦參考MDNhtml

這裏談談使用新的 History API時,須要特別注意的地方html5

  • state 保存不了完整對象,只能保存通常對象(plain object),由於可能瀏覽器使用了JSON方法,方法都被移除掉了。這個我是被坑過的,明明保存了對象,而且在state上面找到了,結果調用方法就報錯。git

  • popstate 事件在firefox下,頁面直接載入時是不觸發的,而 Chrome 和 Safari 下是觸發的。這個問題很容易解決,由於咱們老是能夠經過 history.state 對象得到當前路徑的 state 對象,只是在綁定事件的時候須要額外考慮一下第一次的狀況(有些庫會幫你考慮的)。github

  • 每次瀏覽器歷史記錄發生變化都會觸發popstate事件,包括用戶使用前進或者後退按鈕,以及調用history接口。若是歷史記錄是由調用pushState或者replaceState改變的,state對象可經過event對象的state屬性得到。瀏覽器

最後,推薦一下TJ寫的page.js,一個不只使用簡單,並且對於異步操做很是友好的客戶端路由庫。異步

(完)ide

相關文章
相關標籤/搜索