一. history 是什麼?html
window上的一個對象,由來存儲瀏覽器訪問過的歷史web
二. 用途:瀏覽器
能夠動態跳轉任意一個已在歷史記錄中的地址服務器
三. history方法:svg
1.forward() : 向後翻一頁函數
back(): 回退一頁url
go(num) : num爲負值時 表示回退 num爲正值時表示前進xml
pushState(data, title, url): 添加一條歷史記錄,受同源策略限制,添加歷史紀錄後頁面地址改變可是頁面不會更新——H5新增的方法 IE9如下不兼容htm
replaceState(data, title, url) 替換當前的歷史記錄,受同源策略限制,添加歷史紀錄後頁面地址改變可是頁面不會更新 —— H5新增的方法 IE9如下不兼容對象
四. history事件:
1.popstate: 每次地址改變時觸發,注:pushSate和replaceState的時候不會觸發該事件。只有當用戶點擊回退或前進按鈕或者調用back , forward, go方法纔會觸發這個事件
2.hashchange: 地址欄中hash值改變的時候會觸發
data:一個與指定網址相關的狀態對象,popstate事件觸發時,該對象會傳入回調函數中。若是不須要這個對象,此處能夠填null。 title:新頁面的標題,可是全部瀏覽器目前都忽略這個值,所以這裏能夠填null。 url:新的網址,必須與當前頁面處在同一個域。瀏覽器的地址欄將顯示這個網址。
案例1:
history.forward() //前進一頁
history.back() //回退一頁
history,go(2) // 前進兩頁
history.go(-2) // 回退兩頁
console.log(history.length) // 打印擋牆歷史記錄的條數
案例2:
如下代碼在服務器環境下
假設當前網址爲http://localhost/index.html 使用pushState在歷史記錄裏面添加一條歷史記錄
history.pushState({
page: ‘page1’
}, ‘page-1’, ‘./page.html’);
打開當前的地址,會發現頁面裏面顯示的內容爲index.html裏面的內容可是地址變爲http://localhost/page.html ,這是由於pushState是向歷史記錄添加一條記錄可是不會刷新頁面。點擊回退按鈕地址欄會變化爲index.html
即: pushState方法不會觸發頁面刷新,只是致使history對象發生變化,地址欄的顯示地址發生變化
案例3:
假設當前網址爲http://localhost/index.html 使用replaceState在歷史記錄裏面替換一條歷史記錄
history.pushState({
page: ‘page1’
}, ‘page-1’, ‘./page.html’);
打開當前的地址,會發現頁面裏面顯示的內容爲index.html裏面的內容可是地址變爲http://localhost/page.html ,點擊回退按鈕不會跳轉到index.html頁面,這是由於replaceState是在歷史記錄裏面替換當前的記錄,頁面仍然不會刷新。
即: replaceState方法不會觸發頁面刷新,只是致使history對象發生變化,地址欄的顯示地址發生變化