判斷中轉頁面入口window.performance.navigation.type

本文轉載自:https://blog.csdn.net/zhouziyu2011/article/details/70673123

 

今天遇到一個問題
A---------中轉頁面----------B

中轉頁面如何知道自己是從A跳過來的還是B跳過來的呢?

答案是:
window.performance.navigation.type

 

 

爲了得到腳本運行的精確耗時,需要一個高精度時間戳,傳統的做法是使用Date對象的getTime方法,其不足之處在於:

1) getTime方法及Date對象的其他方法只能精確到毫秒級別,無法得到更小的時間精度;

2) getTime方法只能獲取腳本運行過程中的時間進度,無法知道一些後臺事件的時間進度,比如瀏覽器用了多少時間從服務器加載網頁。

爲了解決這兩個不足之處,ES 5引入高精度時間戳——Performance API。Performance是瀏覽器對象,精度可以達到1毫秒的千分之一。即1秒的百萬分之一,這不僅能衡量程序的細微差別,提高程序的運行速度,還可以獲取後臺事件的時間進度。

Performance API用於精確度量、控制、增強瀏覽器的性能表現,使測量網站性能達到前所未有的精度。目前,所有主要瀏覽器都已經支持performance對象,,包括Chrome 20+、Firefox 15+、IE 10+、Opera 15+。

 

1、performance.timing對象

performance對象的timing屬性指向一個對象,它包含了各種與瀏覽器性能有關的時間數據,提供瀏覽器處理網頁的各個階段的耗時。

performance.timing對象的屬性:

屬性

含義

navigationStart

當前瀏覽器窗口的前一個網頁關閉,發生unload事件時的Unix毫秒時間戳。如果沒有前一個網頁,則等於fetchStart屬性。

unloadEventStart

如果前一個網頁與當前網頁屬於同一個域名,則返回前一個網頁的unload事件發生時的Unix毫秒時間戳。如果沒有前一個網頁,或者之前的網頁跳轉不是在同一個域名內,則返回值爲0。

unloadEventEnd

如果前一個網頁與當前網頁屬於同一個域名,則返回前一個網頁unload事件的回調函數結束時的Unix毫秒時間戳。如果沒有前一個網頁,或者之前的網頁跳轉不是在同一個域名內,則返回值爲0。

redirectStart

返回第一個HTTP跳轉開始時的Unix毫秒時間戳。如果沒有跳轉,或者不是同一個域名內部的跳轉,則返回值爲0。

redirectEnd

返回最後一個HTTP跳轉結束時(即跳轉回應的最後一個字節接受完成時)的Unix毫秒時間戳。如果沒有跳轉,或者不是同一個域名內部的跳轉,則返回值爲0。

fetchStart

返回瀏覽器準備使用HTTP請求讀取文檔時的Unix毫秒時間戳。該事件在網頁查詢本地緩存之前發生。

domainLookupStart

返回域名查詢開始時的Unix毫秒時間戳。如果使用持久連接,或者信息是從本地緩存獲取的,則返回值等同於fetchStart屬性的值。

domainLookupEnd

返回域名查詢結束時的Unix毫秒時間戳。如果使用持久連接,或者信息是從本地緩存獲取的,則返回值等同於fetchStart屬性的值。

connectStart

返回HTTP請求開始向服務器發送時的Unix毫秒時間戳。如果使用持久連接(persistent connection),則返回值等同於fetchStart屬性的值。

connectEnd

返回瀏覽器與服務器之間的連接建立時的Unix毫秒時間戳。如果建立的是持久連接,則返回值等同於fetchStart屬性的值。連接建立指的是所有握手和認證過程全部結束。

secureConnectionStart

返回瀏覽器與服務器開始安全鏈接的握手時的Unix毫秒時間戳。如果當前網頁不要求安全連接,則返回0。

requestStart

返回瀏覽器向服務器發出HTTP請求時(或開始讀取本地緩存時)的Unix毫秒時間戳。

responseStart

返回瀏覽器從服務器收到(或從本地緩存讀取)第一個字節時的Unix毫秒時間戳。

responseEnd

返回瀏覽器從服務器收到(或從本地緩存讀取)最後一個字節時(如果在此之前HTTP連接已經關閉,則返回關閉時)的Unix毫秒時間戳。

domLoading

返回當前網頁DOM結構開始解析時(即Document.readyState屬性變爲loading、相應的readystatechange事件觸發時)的Unix毫秒時間戳。

domInteractive

返回當前網頁DOM結構結束解析、開始加載內嵌資源時(即Document.readyState屬性變爲interactive、相應的readystatechange事件觸發時)的Unix毫秒時間戳。

domContentLoadedEventStart

返回當前網頁DOMContentLoaded事件發生時(即DOM結構解析完畢、所有腳本開始運行時)的Unix毫秒時間戳。

domContentLoadedEventEnd

返回當前網頁所有需要執行的腳本執行完成時的Unix毫秒時間戳。

domComplete

返回當前網頁DOM結構生成時(即Document.readyState屬性變爲complete,以及相應的readystatechange事件發生時)的Unix毫秒時間戳。

loadEventStart

返回當前網頁load事件的回調函數開始時的Unix毫秒時間戳。如果該事件還沒有發生,返回0。

loadEventEnd

返回當前網頁load事件的回調函數運行結束時的Unix毫秒時間戳。如果該事件還沒有發生,返回0。

 

2、performance.now()

performance.now()方法返回當前網頁從performance.timing.navigationStart到當前時間之間的微秒數,其精度可達100萬分之一秒。

performance.now()近似等於Date.now(),但前者返回的是毫秒,後者返回的是微秒,後者的精度比前者高1000倍。

 

3、performance.mark()

performance.mark方法用於爲相應的視點做標記。

performance.clearMarks方法用於清除標記,如果不加參數,則清除所有標記。

 

4、performance.getEntries()

瀏覽器獲取網頁時,會對網頁中每一個對象,如js文件、css文件、圖片文件等,發出一個HTTP請求。performance.getEntries方法以數組形式,返回這些請求的時間統計信息。

由於performance.getEntries()方法與瀏覽器處理網頁的過程相關,所以只能在瀏覽器中使用。

 

5、performance.navigation對象

除時間信息,performance還可以提供用戶行爲信息,主要存放在performance.navigation對象上。

performance.navigation對象有兩個屬性:

1) performance.navigation.type

返回一個整數值,表示網頁的加載來源,可能有以下4種:

① 0:網頁通過點擊鏈接、地址欄輸入、表單提交、腳本操作等方式加載,相當於常數performance.navigation.TYPE_NAVIGATENEXT。

② 1:網頁通過重新加載按鈕或location.reload()方法加載,相當於常數performance.navigation.TYPE_RELOAD。

③ 2:網頁通過前進或後退按鈕加載,相當於常數performance.navigation.TYPE_BACK_FORWARD。

④ 255:任何其他來源的加載,相當於常數performance.navigation.TYPE_UNDEFINED。

2) performance.navigation.redirectCount

該屬性表示當前網頁經過了多少次重定向跳轉。
————————————————
版權聲明:本文爲CSDN博主「筱葭」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhouziyu2011/article/details/70673123

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章