1 利用window.name屬性在頁面刷新時(shí)不會重置判斷(在該屬性空置的情況下可使用)
if(window.name == ""){
console.log("首次被加載");
window.name = "isReload"; // 在首次進(jìn)入頁面時(shí)我們可以給window.name設(shè)置一個(gè)固定值
}else if(window.name == "isReload"){
console.log("頁面被刷新");
}
2 使用sessionStorage或cookie來判斷
與window.name實(shí)現(xiàn)方法類似在首次加載時(shí)設(shè)置一個(gè)固定值 之后判斷即可
這里以sessionStorage來為例
if(sessionStorage.getItem("isReload")){
console.log("頁面被刷新");
}else{
console.log("首次被加載");
sessionStorage.setItem("isReload", true)
}
3 可以使用window.chrome對象 (該方法只在谷歌瀏覽器中可用 其他瀏覽器無chrome對象)
該對象提供了一個(gè)loadTimes() 方法 執(zhí)行該方法我們會得到一個(gè)有關(guān)頁面性能的對象
其中有一個(gè)navigationType屬性可以幫助我們判斷頁面是加載還是刷新
它有兩個(gè)值 Reload(刷新) 和 Other(首次加載)
所以我們可以通過if判斷:
if (window.chrome.loadTimes().navigationType == "Reload") {
console.log("頁面被刷新")
}else{
console.log("首次被加載")
}
- 使用window.chrome.loadTimes方法會報(bào)警告
isreload.html:20 [Deprecation] chrome.loadTimes() is deprecated, instead use standardized API: Navigation Timing 2. https://www.chromestatus.com/features/5637885046816768.
官方已經(jīng)說明該方法被棄用了 讓我們使用 標(biāo)準(zhǔn)化API: Navigation Timing 2
所有上面代碼需要改下:
if (window.performance.navigation.type == 1) {
console.log("頁面被刷新")
}else{
console.log("首次被加載")
}