瀏覽器視窗有一個history對象,用來保存瀏覽歷史記錄。
如果目前視窗先後存取了三個網址,那麼history物件就包括三項,history.length屬性等於3。
history物件提供了一系列方法,允許在瀏覽歷史之間移動:
window.history.back():移動到上一個訪問頁面,等同於瀏覽器的後退鍵。
window.history.forward():移動到下一個訪問頁面,等同於瀏覽器的前進鍵。
window.history.go(num):接受一個整數作為參數,移動到該整數指定的頁面,例如go(1)相當於forward(),go(-1)相當於back()。
window.history.pushState():HTML5為history物件新增了兩個新方法,window.history.pushState()和window.history.replaceState(),用來在瀏覽歷史中新增和修改記錄。
註:1.如果移動的位置超出了訪問歷史的邊界,以上三個方法並不報錯,而是默默的失敗。
2.設定時,頁面通常是從瀏覽器快取之中加載,而不是重新要求伺服器發送新的網頁。
重點講解下: window. history.pushState()window.history.pushState(state, title, utl),在頁面中建立一個history 實體。直接加入到歷史記錄中。
其中參數:
state:與指定網址相關的狀態對象,popstate事件觸發時,該對象會傳入回呼函數。如果不需要這個對象,此處可以填null。
title:新頁面的標題,但是所有瀏覽器目前都忽略這個值,因此這裡可以填null。
url:新的網址, 必須與目前頁面處在同一個網域。瀏覽器的網址列將顯示這個網址。
註:pushState方法不會觸發頁面刷新,只是導致history物件發生變化,網址列會有反應。
舉例實作:Html5 監聽攔截Android返回鍵方法如下:
1. 監聽popstate 事件
window.addEventListener(popstate, function(){ //doSomething}, false)
2.取消預設的回傳操作,即監聽攔截返回鍵:新增一空的history 實體作為替代原先的history 實體
window.history.pushState(null, null, #);
舉例:
<!DOCTYPE html><html> <meta name=viewport content=width=device-width> <script type=text/javascript> var count = 0 ; window.history.pushState(null, null, #); window.addEventListener (popstate, function(e) { window.history.pushState(null, null, #); document.getElementById('logView').innerHTML = 使用者點選返回+ (++count) }) </script><body> <p id=logView>test</p></body></html>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。