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 ...
随机推荐
- ADG无法同步:TT00进程报错 Error 12514
环境: Oracle 19.16 ADG (Single Instance -> RAC) 在配置ADG的场景,发现ADG不能同步. 1.查看报错信息 2.oerr查看该错误说明 3.尝试sql ...
- Springboot跨域配置的坑
部分时间需要加上crossOrigin
- java入门与进阶-P1.3+P1.4
准备一个java编程软件 eclipse官网: Enabling Open Innovation & Collaboration | The Eclipse Foundation 他是一个免费 ...
- javaWeb03-请求转发和请求重定向【包含浏览器与响应编码格式不一致的解决方法】
本文主要讲述javaWeb的请求转发和请求重定向的区别 一. 请求转发 1. 图解 2. 代码示例 Servlet1的代码示例如下 public class Servlet1 extends Http ...
- 和ChatGPT聊了一会天它的学习反映能力惊呆了我
我:用java写一段玫瑰花 ChatGPT:您可以使用 Java 绘制玫瑰花.以下是一段代码: import java.awt.*; import javax.swing.*; public clas ...
- vue axios请求中断的处理
https://blog.csdn.net/qiaoqiaohong/article/details/121014296
- JZOJ 2934. 【NOIP2012模拟8.7】字符串函数
题目大意 个等长的由大写英文字母构成的字符串 \(a\) 和 \(b\),从 \(a\) 中选择连续子串 \(x\),从 \(b\) 中选出连续子串y. 定义函数 \(f_{x,y}\) 为满足条件 ...
- Linux快照利器:Timeshift,备份和还原效果杠杠的
转载csdn:Linux快照利器:Timeshift,备份和还原效果杠杠的_网络技术联盟站-CSDN博客
- 使用express设置静态目录,创建服务,响应get请求
// 1.引入express const express = require('express');//在node应用中载入express // 2.创建应用对象 const app = expres ...
- Android Studio 模拟器(AVD)访问本机服务器
问题说明 若安卓模拟器(AVD)调试安卓 App,访问本机上的 Tomcat 服务器时,很有可能会不成功,按照下面的步骤来一遍以尝试解决问题. 模拟器配置 DNS 服务器 (一)找到模拟器安装的位置 ...