關(guān)于禁止頁面后退的一些方法

最近在項目中遇到登錄頁面進(jìn)行跳轉(zhuǎn)到主頁,退出登錄跳轉(zhuǎn)到登錄界面等,發(fā)現(xiàn)瀏覽器默認(rèn)的后退按鈕很是蛋疼,因為項目上是盡量前端去保存用戶狀態(tài),沒有后臺進(jìn)行session校驗,故跳轉(zhuǎn)的時候要注意的是后退按鈕的禁用,找了幾種方法,感覺不錯,分享出來。

①在IE9及其以上,各種主流瀏覽器上
使用瀏覽器history這個api,HTML5中新引入的pushState()和 replaceState()方法則是首選。 由于兩者作用差不多,只講其中一種pushState()
使用方法:history.pushState(stateObject,title,URL)
pushState是一個歷史記錄的管理的方法,其中stateObject是一個對象,存儲于這條歷史相關(guān)的狀態(tài)信息,通常寫為null即可,title取標(biāo)題,也取null,URL是URL的歷史記錄的意思,即給這個窗口的歷史記錄添加一個URL,并不是會頁面進(jìn)行跳轉(zhuǎn)的意思。具體使用如下:


image.png

之后動態(tài)去監(jiān)控popstate的后退或者前進(jìn)內(nèi)容,觸發(fā)的時候調(diào)用history.pushState(stateObject,title,URL),那么做到用戶后退時一直進(jìn)去的是我們添加的那個歷史記錄里。

②IE9以下的低版本瀏覽器
這類瀏覽器沒有pushState()方法,也做不到動態(tài)監(jiān)控popstate的內(nèi)容了,此時的瀏覽器只有hash哈希地址的變化的監(jiān)控(瀏覽器的url后用#接地址來完成頁面變化的方式),此時操控瀏覽器的歷史通過window.location.hash來完成,具體如下


image.png

在一開始的時候固定一個哈希,在瀏覽器的后退或前進(jìn)時url發(fā)生改變時,那么利用window.onhashchange事件監(jiān)聽變化,再進(jìn)行固定即可。

經(jīng)過以上兩種方法,可以解決禁用后退功能按鈕的問題

個人項目上使用第一種


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容