在VUE3中禁止網(wǎng)頁返回到上一頁的方法
可以使用以下方法在Vue 3中禁止網(wǎng)頁返回到上一頁:
第一種:監(jiān)聽返回事件
使用返回監(jiān)聽事件,在用戶點(diǎn)擊返回按鈕的時(shí)候觸發(fā),觸發(fā)后使用window.history.forward()回到下一頁。
代碼如下:
<script language="javascript">
window.addEventListener('popstate', function () {
window.history.forward();
});
</script>
這種方法無法阻止瀏覽器返回到上一頁,所以就會(huì)導(dǎo)致頁面會(huì)出現(xiàn)閃一下的情況,故不推薦使用這種方法。
第二種:在頁面中修改歷史記錄
使用history.pushState()方法將當(dāng)前URL添加到瀏覽器歷史記錄中,從而覆蓋上一頁的URL。
我們把參數(shù)設(shè)置為空,就相當(dāng)于把上一頁的記錄清除了,就可以實(shí)現(xiàn)無法返回到上一頁的目的。
例如,在Vue 3應(yīng)用程序的created生命周期或setup語法的onMounted中添加history.pushState(null, null, location.href);
代碼如下:
<script setup>
onMounted(()=>{
history.pushState(null, null, location.href);
})
</script>
這種方法就不會(huì)有閃一下的現(xiàn)象,但如果在多頁面的應(yīng)用中,你會(huì)發(fā)現(xiàn),使用這種方法只能在當(dāng)前頁面生效。
第三種:在路由中修改歷史記錄
在路由的afterEach中清除上一頁數(shù)據(jù)讓路由無法跳轉(zhuǎn),從而實(shí)現(xiàn)禁止網(wǎng)頁返回到上一頁的目的。
注意:
history.pushState(null, null, location.href)不要添加到了beforeEach中,在這里添加起不到作用。因?yàn)檫@是在跳轉(zhuǎn)之前執(zhí)行,這個(gè)時(shí)候路由還能拿到上一頁數(shù)據(jù),從而完成跳轉(zhuǎn)到下一頁。
例如,在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){
// 注意寫在此處起不到禁用返回的功能,因?yàn)檫@是在跳轉(zhuǎn)前執(zhí)行,路由還能拿到跳轉(zhuǎn)之前的上一頁數(shù)據(jù)
})
// 進(jìn)行路由跳轉(zhuǎn)后執(zhí)行
router.afterEach(function(to,from){
// 跳轉(zhuǎn)后清除一下上一頁的數(shù)據(jù)
history.pushState(null, null, location.href);
})
大家也可以在afterEach中添加禁止跳轉(zhuǎn)的條件,例如僅對(duì)特定的頁面進(jìn)行限制,或者執(zhí)行其他操作等。
到此這篇關(guān)于在VUE3中如何禁止網(wǎng)頁返回到上一頁的文章就介紹到這了,更多相關(guān)vue3禁止網(wǎng)頁返回到上一頁內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue-cli項(xiàng)目獲取本地json文件數(shù)據(jù)的實(shí)例
下面小編就為大家分享一篇Vue-cli項(xiàng)目獲取本地json文件數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
vue-quill-editor插入圖片路徑太長(zhǎng)問題解決方法
這篇文章主要介紹了vue-quill-editor插入圖片路徑太長(zhǎng)問題解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Vue3連接SSE并且返回結(jié)果用打字機(jī)效果呈現(xiàn)方法
SSE的核心是一個(gè)持久的HTTP連接,服務(wù)端通過該連接不斷發(fā)送文本格式的數(shù)據(jù),下面這篇文章主要介紹了Vue3連接SSE并且返回結(jié)果用打字機(jī)效果呈現(xiàn)方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-03-03
Vue單頁應(yīng)用引用單獨(dú)的樣式文件的兩種方式
這篇文章給大家介紹Vue單頁應(yīng)用如何引用單獨(dú)的樣式文件,本文以css文件為例,通過兩種方式給大家介紹的非常詳細(xì),需要的朋友參考下吧2018-03-03
vue forEach循環(huán)數(shù)組拿到自己想要的數(shù)據(jù)方法
今天小編就為大家分享一篇vue forEach循環(huán)數(shù)組拿到自己想要的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09
用v-html解決Vue.js渲染中html標(biāo)簽不被解析的問題
這篇文章主要給大家介紹了如何利用v-html解決Vue.js渲染過程中html標(biāo)簽不能被解析,html標(biāo)簽顯示為字符串的問題,文中通過圖文介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12
vue?table?甘特圖vxe-gantt?實(shí)現(xiàn)多個(gè)表格的任務(wù)互相拖拽數(shù)據(jù)功能
vxe-gantt支持多表格任務(wù)跨表拖拽,通過設(shè)置row-drag-config.isCrossTableDrag啟用功能,需確保數(shù)據(jù)主鍵不重復(fù)且指定keyField字段,該方案適用于需要多表數(shù)據(jù)聯(lián)動(dòng)的場(chǎng)景,實(shí)現(xiàn)方式簡(jiǎn)潔高效,感興趣的朋友跟隨小編一起看看吧2025-09-09
Vue props實(shí)現(xiàn)父組件給子組件傳遞數(shù)據(jù)的方式
Vue中的配置項(xiàng)Props能讓組件接收外部傳遞過來的數(shù)據(jù),本文給大家介紹了Vue props實(shí)現(xiàn)父組件給子組件傳遞數(shù)據(jù)的幾種方式,文中有詳細(xì)的實(shí)現(xiàn)方式,具有一定的參考價(jià)值,需要的朋友可以參考下2023-10-10

