History 歷史記錄

一. history 是什麼?html

window上的一個對象,由來存儲瀏覽器訪問過的歷史web

二. 用途:瀏覽器

能夠動態跳轉任意一個已在歷史記錄中的地址服務器

三. history方法:svg

1.forward() : 向後翻一頁函數

  1. back(): 回退一頁url

  2. go(num) : num爲負值時 表示回退 num爲正值時表示前進xml

  3. pushState(data, title, url): 添加一條歷史記錄,受同源策略限制,添加歷史紀錄後頁面地址改變可是頁面不會更新——H5新增的方法 IE9如下不兼容htm

  4. 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對象發生變化,地址欄的顯示地址發生變化