在VUE3中禁止網(wǎng)頁(yè)返回到上一頁(yè)的方法
可以使用以下方法在Vue 3中禁止網(wǎng)頁(yè)返回到上一頁(yè):
第一種:監(jiān)聽(tīng)返回事件
使用返回監(jiān)聽(tīng)事件,在用戶(hù)點(diǎn)擊返回按鈕的時(shí)候觸發(fā),觸發(fā)后使用window.history.forward()回到下一頁(yè)。
代碼如下:
<script language="javascript"> window.addEventListener('popstate', function () { window.history.forward(); }); </script>
這種方法無(wú)法阻止瀏覽器返回到上一頁(yè),所以就會(huì)導(dǎo)致頁(yè)面會(huì)出現(xiàn)閃一下的情況,故不推薦使用這種方法。
第二種:在頁(yè)面中修改歷史記錄
使用history.pushState()方法將當(dāng)前URL添加到瀏覽器歷史記錄中,從而覆蓋上一頁(yè)的URL。
我們把參數(shù)設(shè)置為空,就相當(dāng)于把上一頁(yè)的記錄清除了,就可以實(shí)現(xiàn)無(wú)法返回到上一頁(yè)的目的。
例如,在Vue 3應(yīng)用程序的created生命周期或setup語(yǔ)法的onMounted中添加history.pushState(null, null, location.href);
代碼如下:
<script setup> onMounted(()=>{ history.pushState(null, null, location.href); }) </script>
這種方法就不會(huì)有閃一下的現(xiàn)象,但如果在多頁(yè)面的應(yīng)用中,你會(huì)發(fā)現(xiàn),使用這種方法只能在當(dāng)前頁(yè)面生效。
第三種:在路由中修改歷史記錄
在路由的afterEach中清除上一頁(yè)數(shù)據(jù)讓路由無(wú)法跳轉(zhuǎn),從而實(shí)現(xiàn)禁止網(wǎng)頁(yè)返回到上一頁(yè)的目的。
注意:
history.pushState(null, null, location.href)不要添加到了beforeEach中,在這里添加起不到作用。因?yàn)檫@是在跳轉(zhuǎn)之前執(zhí)行,這個(gè)時(shí)候路由還能拿到上一頁(yè)數(shù)據(jù),從而完成跳轉(zhuǎn)到下一頁(yè)。
例如,在router.js中添加以下代碼:
import { createRouter,createWebHistory } from "vue-router"; const router = createRouter({ history: createWebHistory(), routes:[ { name: 'test1', path:'/test1', component:() => import('../components/test1.vue'), }, { name:'test2', path:'/test2', component:() => import('../components/test2.vue') } ] }) // 每次進(jìn)行路由跳轉(zhuǎn)時(shí)都會(huì)執(zhí)行 router.beforeEach(function(to,from,next){ // 注意寫(xiě)在此處起不到禁用返回的功能,因?yàn)檫@是在跳轉(zhuǎn)前執(zhí)行,路由還能拿到跳轉(zhuǎn)之前的上一頁(yè)數(shù)據(jù) }) // 進(jìn)行路由跳轉(zhuǎn)后執(zhí)行 router.afterEach(function(to,from){ // 跳轉(zhuǎn)后清除一下上一頁(yè)的數(shù)據(jù) history.pushState(null, null, location.href); })
大家也可以在afterEach中添加禁止跳轉(zhuǎn)的條件,例如僅對(duì)特定的頁(yè)面進(jìn)行限制,或者執(zhí)行其他操作等。
到此這篇關(guān)于在VUE3中如何禁止網(wǎng)頁(yè)返回到上一頁(yè)的文章就介紹到這了,更多相關(guān)vue3禁止網(wǎng)頁(yè)返回到上一頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
element-ui 關(guān)于獲取select 的label值方法
今天小編就為大家分享一篇element-ui 關(guān)于獲取select 的label值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08vue3 vue-draggable-next如何實(shí)現(xiàn)拖拽穿梭框效果
這篇文章主要介紹了vue3 vue-draggable-next如何實(shí)現(xiàn)拖拽穿梭框效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Vue3實(shí)現(xiàn)全局loading指令的示例詳解
這篇文章主要介紹了Vue3實(shí)現(xiàn)全局loading指令,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06vue v-viewer組件使用示例詳解(v-viewer輪播圖)
這篇文章主要介紹了vue v-viewer組件使用示例詳解(v-viewer輪播圖),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02詳解mpvue中使用vant時(shí)需要注意的onChange事件的坑
這篇文章主要介紹了詳解mpvue中使用vant時(shí)需要注意的onChange事件的坑,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05Vue3系列之effect和ReactiveEffect?track?trigger源碼解析
這篇文章主要為大家介紹了Vue3系列之effect和ReactiveEffect?track?trigger源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10