vue3项目在页面退出时弹窗确认--用vant组件Dialog弹窗在路由改变的时候不生效问题
写vue3的H5项目的时候有个需求是回退时弹窗确认是否退出当前页面
一、第一个办法------使用onbeforeRouteLeave路由钩子
const formRouteAbi = localStorage.getItem("formRouteAbi"); //获取上一页路径
onBeforeRouteLeave((to, from, next) => {
if (formRouteAbi == to.fullPath && topicInfo.topicNow > 0) {
Dialog.confirm({
message: `你确定要退出社交能力测试吗,再测试${
topicInfo.topicNum - topicInfo.topicNow
}个题就完成该能力测试了。`,
confirmButtonText: "继续测试",
cancelButtonText: "确认退出",
})
.then(() => {
next(false);
})
.catch(() => {
next(true);
});
} else {
next(true);
}
});
二、第二个办法------使用history.pushState(null, "null", document.URL);禁用前进后退功能
禁用回退功能,手动添加跳转事件
onMounted(() => {
history.pushState(null, "null", document.URL);
window.addEventListener("popstate", handleEvent, false);
});
onUnmounted(() => {
window.removeEventListener("popstate", handleEvent, false);
});
const url =
process.env.NODE_ENV == "production"
? location.origin + "/shengchan"
: location.origin;
const handleEvent = () => {
history.pushState(null, "null", document.URL);
if (topicInfo.topicNow > 0) {
Dialog.confirm({
closeOnPopstate: false,
message: `你确定要退出社交能力测试吗,再测试${
topicInfo.topicNum - topicInfo.topicNow
}个题就完成该能力测试了。`,
confirmButtonText: "继续测试",
cancelButtonText: "确认退出",
})
.then(() => {})
.catch(() => {
location.href = `${url}${formRouteAbi}`;
});
} else {
location.href = `${url}${formRouteAbi}`;
}
};
两种方法,都可以实现
vue3项目在页面退出时弹窗确认--用vant组件Dialog弹窗在路由改变的时候不生效问题的更多相关文章
- JSP页面退出时清除会话Session
我们用一个quit.jsp来处理用户退出系统的操作,quit.jsp负责注销session,及时释放资源. 注销session. 关闭浏览器窗口. 其代码如下所示: <%@ page conte ...
- 使用vue的mixins混入实现对正在编辑的页面离开时提示
mixins.ts import { Vue, Component, Watch } from "vue-property-decorator" Component.registe ...
- [UWP]在应用退出时弹出确认提示框
1. 需求 在应用退出时(点击右上角的关闭按钮)弹出一个确认按钮可以说是一个最常见的操作了,例如记事本的"你是否保存": 但这个功能在UWP上居然有点小复杂.这篇文章将解释如何实现 ...
- Vue 路由守卫解决页面退出和弹窗的显示冲突
在使用UI框架提供的弹出层Popup时,如Vant UI的popup,在弹出层显示时,点击物理按键或者小程序自带的返回时,会直接退出页面,这明显不符合页面逻辑. 解决思路: 在弹出层显示时,点击了返回 ...
- 从零搭建基于webpack的Electron-Vue3项目(1)——基于webpack的Vue3项目搭建
从零搭建基于webpack的Electron-Vue3项目(1)--基于webpack的Vue3项目搭建 前言 本篇文章内容,主要是基于webpack的Vue3项目开发环境进行搭建,暂时还不涉及到El ...
- 编写大型项目web页面 从写web登陆页面开始
web页面搭建需要准备什么工具 首先我们会和设计师沟通 我们需要一些检验设计的工具 ps 自动裁图 自动测量工具 (我这里安利一下一个工具 我用的cutterman) sketch 可以使用阿里的工具 ...
- js在关闭页面前弹出确认提示【转载】
最近项目中出现个bug,就是导出数据后,会提示确认导航,其实实际需求并不需要这个提示,可能是之前遗留的问题.查了下资料是在触发了onbeforeunload事件,那么剩下的就是代码组织问题了. 众所周 ...
- 【web】a标签点击时跳出确认框
[web]a标签点击时跳出确认框 https://blog.csdn.net/michael_ouyang/article/details/52765575需求如下: 在跳转链接前,需要判断该用户是否 ...
- 前端Vue项目——购物车页面
一.加入购物车的两种策略 1.加入购物车接口 在 src/restful/api.js 中写入添加购物车接口: // 加入购物车的接口 export const shopCart = (params) ...
- 前端Vue项目——登录页面实现
一.geetest滑动验证 geetest官方文档地址:https://docs.geetest.com/ 产品——极速验证:基于深度学习的人机识别应用.极验「行为验证」是一项可以帮助你的网站与APP ...
随机推荐
- .NET 入门到高级路线
.NET 入门到高级路线 [c# 基础语法](# CSharp基础语法) [.NET Core 基础知识](# .NET Core 基础知识) [ASP.NET Core 基础知识概述](# ASP. ...
- Ubuntu 22.04 GCC Arm 12.2.rel1编译 DAPLink
ARMmbed / DAPLink 项目 仓库地址 https://github.com/ARMmbed/DAPLink Arm Mbed 应该属于Arm的机构或者是Arm资助的机构. 常用的 DAP ...
- Dubbo-RPC核心接口介绍
前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...
- 学习Java Day 5
今天看视频学习了一下eclipse的使用方法,解决了昨天运行不了的结果,并尝试了一下java的输入:
- Redhat7.6搭建LAMP环境
关闭防火墙和 selinux# systemctl stop firewalld systemctl disable firewalld 禁用 Selinux vim /etc/selinux/con ...
- Win下依据端口排查步骤
Win下依据端口排查步骤 目录 Win下依据端口排查步骤 1 排查步骤 2 参考 今天突然发现自己电脑出现7680端口的内网连接,决定看看这个端口是做什么用的 1 排查步骤 确认7680端口连接情况与 ...
- RA维持期达标式减停生物制剂(DRESS研究)的18个月数据
标签:类风湿关节炎; TNF抑制剂; 达标式减停药物 RA维持期达标式减停生物制剂(DRESS研究): 18个月临床疗效与继续足量应用者相仿 电邮发布日期: 2016-01-14 由于缺乏对常规诊疗有 ...
- P8421 [THUPC2022 决赛] rsraogps
\(\text{Solution}\) 肯定扫描线在考虑维护什么东西,假设 \(r\) 右移时可以暴力得到所有新值,发现需要维护区间历史版本和以及区间当前值之和 这三个操作对于一个数来说变化次数都是 ...
- C++实现二叉树的定义与操作
头文件及常量定义 #include<stdio.h> #include<stdlib.h> #include<stdarg.h> #include<iostr ...
- pat乙级 1020 月饼
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> ...