首页 > 其他分享 >Nuxt-监听浏览器返回

Nuxt-监听浏览器返回

时间:2023-11-03 15:46:27浏览次数:43  
标签:false back window history 浏览器 pushState null 监听 Nuxt

区分普通页面/keep-alive缓存页面

1、普通页面

mounted: {
    this.setAddListener()
},

destroyed() {
        window.removeEventListener('popstate', this.setBack, false)
    },

methods: {
    //监听浏览器返回操作
setAddListener() {
            const hasRefresh = this.$store.state.biz.hasRefresh;
            if(window.history && window.history.pushState) {
                !hasRefresh && history.pushState(null, null, document.URL); // 页面刷新不添加空地址
                window.addEventListener('popstate', this.setBack, false)
            }
        },
setBack() {
            if(this.back.hasBack) { // 允许返回
                this.$router.back()
            } else { // 禁止返回
                history.pushState(null, null, document.URL);
                this.back.visible = true
                this.back.hasBack = false
                return false
            }
        },
}

2、keep-alive页面

// 1、进入该页面时,会执行activated()函数 
activated() {
    this.setAddListener()
},
// 2、监听事件返回路径
methods:{
  setAddListener() {
            const hasRefresh = this.$store.state.biz.hasRefresh;
            if(window.history && window.history.pushState) {
                !hasRefresh && history.pushState(null, null, document.URL);
                // history.pushState(null, null, document.URL);
                window.addEventListener('popstate', this.setBack, false)
            }
        },
setBack() {
            if(this.back.hasBack) { // 允许返回
                this.$router.back()
            } else { // 禁止返回
                history.pushState(null, null, document.URL);
                this.back.visible = true
                this.back.hasBack = false
                return false
            }
        },
 
 
注意:离开该页面时,销毁事件解决方法有2种 :
// 3、直接调用deactivated
deactivated() {
    window.removeEventListener('popstate', this.setBack, false);
},
// 3、配合导航守卫,手动调用生命周期销毁函数
beforeRouteLeave (to, from, next) {
    window.removeEventListener('popstate', this.setBack, false);
    next();
},

 

标签:false,back,window,history,浏览器,pushState,null,监听,Nuxt
From: https://www.cnblogs.com/WebMadman/p/17807709.html

相关文章

  • echarts监听legend的点击事件
    1、echarts监听legend的点击事件myChart.on('legendselectchanged',function(params){console.log(params);});转自:echarts问题--点击legend不全部隐藏,监听最后一个legend点击事件_echarts点击图例不隐藏_哥要掉线了的博客-CSDN博客 ......
  • firfox浏览器访问内网异常处理记录
    firfox远程访问内网,出现PR_END_OF_FILE_ERROR可能原因1vpn或代理问题造成的,可能是这个软件的客户端加密方法选择的和服务端不一致导致的2 所访问的网站需要证书,通过认证后才可以访问网站。证书管理中,导入相应的证书即可3 电脑时钟不正确解决方式1浏览器的网络连接中设置,哪些......
  • Chrome浏览器已开启自动保存密码,但仍无法自动保存密码的解决办法
     解决方案:打开chrome浏览器的安装目录..\GooglelChromelUserData\Default删除LoginData,LoginData-journal两个文件windows路径可以尝试找:C:\Users\Administrator\AppData\Local\Google\Chrome\UserData\Default重启浏览器,即可原文地址......
  • vue3 google浏览器格式化控制台打印的数据
    ......
  • 【xterm】在浏览器中实现SSH终端,实现远程登录服务器
    使用插件Xterm.js扩展终端功能的JavaScript模块网页植入SSH终端(web-terminal)连接服务端,实现远程登录,用户可以在网页上直接进行远程登录和操作服务器,而无需使用传统的终端或SSH客户端HTML示例npminstallxterm<!doctypehtml><html><head><linkrel......
  • IDEA配置Tomcat老是在浏览器中包资源找不到404错误
    Idea报了一个404老是访问不到我的项目地址,花了我好久的时间,我可算是整出来了。废话不多说,上图。第一步排错:发现上边url:https://localhost:8080/事实上这个url是指向不了我们项目的,也就是说这个url的指向是找不到我们项目的路径的。接下来第二步:看下边那行有个红色圈圈的警告,我......
  • 使用Postman快速复现浏览器的请求(包括生成调用代码)
    前言大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。好久没有写开发类的工具使用文了,这次我来讲下平时我是如何使用Postman工具的。一、工具准备软件下载链接:https://www.postman.c......
  • Chrome浏览器查看前端参数
    按F12或者右键点击“检查”进入开发者模式。点击这个箭头图标,即可选择要查看参数的区域。 查看表格的行高和列宽当鼠标移到某区域,就会出现浮层,显示此区域的长和宽 查看字体和字号在搜索栏搜索关键字“font-size”可找到字号 ......
  • selenium远程调用浏览器(firefox版)
    安装selenium浏览器服务dockerrun--namefirefox-d-p4444:4444-p7900:7900--shm-size="2g"selenium/standalone-firefox:3.141demofromseleniumimportwebdriverfromselenium.webdriverimportDesiredCapabilitiesdriver=webdriver.Remote(#指定......
  • 【ROS2机器人入门到实战】坐标变换发布监听Python实现
    3.坐标变换发布监听Python实现写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn运行前面安装的jupyter,我们尝试使用代码来操......