- 深入理解React Router:從原理到實踐
- 李楊韜
- 235字
- 2021-04-16 16:10:46
2.5.3 browserHistory事件處理
在browserHistory中,監聽popstate事件用以獲知瀏覽器地址的改變,如調用history.go,則單擊瀏覽器的“前進”和“后退”按鈕,通過window.location.hash改變hash等都會觸發popstate事件。在popstate事件中,browserHistory會更新其維護的地址信息并通知history的監聽者。注意,history.pushState、history.replaceState并不會觸發popstate事件。在源碼中,browserHistory在needsHashChangeListener為true時監聽了hashchange事件,源碼如下:

在功能職責上,browserHistory應該對URL的所有變化做出反應。相對于Chrome等瀏覽器hash變化會觸發popstate事件,在IE瀏覽器上,改變hash不會觸發popstate事件,而會觸發hashchange事件。因此,在IE瀏覽器上,即便是browserHistory,也需要對hashchange事件進行監聽,以應對URL的所有變化。
推薦閱讀
- Git Version Control Cookbook
- 實用防銹油配方與制備200例
- 算法精粹:經典計算機科學問題的Python實現
- HTML5游戲開發案例教程
- Groovy for Domain:specific Languages(Second Edition)
- Access 2016數據庫管
- Learning Apache Mahout Classification
- 學Python也可以這么有趣
- Mastering Apache Spark 2.x(Second Edition)
- JAVA程序設計實驗教程
- Learning Unity 2D Game Development by Example
- Getting Started with React Native
- Python程序設計與算法基礎教程(第2版)(微課版)
- 編寫高質量代碼:改善Objective-C程序的61個建議
- Go語言底層原理剖析