window.hostory(浏览器的历史记录)
瀏覽器會對同一個窗口(選項卡)中訪問的網頁進行記錄,不管我們是通過以下哪種方式改變網頁,瀏覽器都會把改變后的網頁記錄下來,以便通過瀏覽器的前進和后退按鈕,能夠快速的切換到已經訪問過的網頁:
  1)直接在地址欄輸入網頁地址;
  2)通過網頁內的超鏈接點擊,跳轉到其它網頁;但是不能是在新窗口中打開的鏈接;
  3)通過腳本改變location.href跳轉到其它網頁;
  4)通過表單提交跳轉到其它網頁;但是不能是提交到新窗口的表單。
網頁錨點的變化,也會導致歷史記錄棧的更新,特性與前文描述相同。
總之,只要是在同一個窗口內,網頁發生了跳轉,瀏覽器都會記錄。不過刷新除外,history對象的length屬性可以查看當前窗口存儲的歷史記錄總數,在前面的demo頁面中,我把這個屬性打印在頁面上,只有網頁改變的時候,這個屬性才會變化;而刷新網頁不會改變這個屬性。
瀏覽器有一個數據結構來存儲網頁的歷史記錄,我把它稱之為歷史記錄棧,因為它的結構跟棧的使用方式有些相似。
跟歷史記錄棧一起的,瀏覽器還有一個訪問指針來表示當前網頁在歷史記錄棧中的位置。默認情況下,當我們通過前面列舉的方式改變網頁地址的時候,都會把新的頁面壓入到歷史記錄棧的頂部,同時把指針指向到這個最新的網頁,就如上面的圖中所示,每次改變了頁面,當前頁面的指針始終指向的是歷史記錄棧最頂部的那條記錄;當我們通過瀏覽器的前進后退功能(包括按鈕,快捷,右鍵菜單等方式)或者是history提供的go/back/forward方法,都不會改變歷史記錄棧的內容,只會移動一下這個指針:
1)前進功能/go(1)/forward,只是讓這個指針上移1個位置;
2)后退功能/go(-1)/forward,只是讓這個指針下移1個位置;
3)go(n)讓指針上移n個位置;go(-n)讓指針下移n個位置。
瀏覽器根據移動后的指針位置,找到歷史記錄棧中的網頁進行顯示.
雖然history.go(n)和history.go(-n)可以將指針移動到任意位置,但是當要移動到的位置超出了歷史記錄棧的位置范圍時,指針就不會移動。
可以用history.length查看長度。
window.history.go(-1)是返回上一頁
window.location.go(-1)是刷新上一頁
總結
以上是生活随笔為你收集整理的window.hostory(浏览器的历史记录)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Shell脚本学习笔记3——控制GPIO
- 下一篇: C# ASP.NET 转换为int型的方
