十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章运用简单易懂的例子给大家介绍vue利用popstate实现处理页面返回的方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
成都创新互联自2013年起,是专业互联网技术服务公司,拥有项目成都网站建设、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元巨野做网站,已为上家服务,为巨野各地企业和个人服务,联系电话:18980820575需求背景:项目中需要做一个返回确认,避免用户误触返回键而退出当前页面。
原理:利用history和浏览器刷新popstate状态
实现:
1、在mounted() 阶段判断并添加popstate事件监听,History.pushState()(参数:一个状态对象,一个标题(现在被忽略了),以及一个可选的URL地址), 注意:IOS版的微信,是会立即触发popstate事件,所以需要pageshow做下处理,(当一条会话历史记录被执行的时候将会触发页面显示(pageshow)事件。(这包括了后退/前进按钮操作,同时也会在onload 事件触发后初始化页面时触发))
2、在methods里定义监听操作函数
3、页面销毁时,取消监听。(注意:一定要取消监听,否则其他vue路由页面也会被监听)
补充知识:vue项目监测浏览器返回按钮
在WebApp或浏览器中,会有点击返回、后退、上一页等按钮实现自己的关闭页面、调整到指定页面、确认离开页面或执行一些其它操作的需求。可以使用 popstate 事件进行监听返回、后退、上一页操作。
简单介绍history中的操作
window.history.back(),后退
window.history.forward(),前进
window.history.go(num),前进或后退指定数量历史记录
window.history.pushState(state,title,url),在页面中穿件一个history实体。直接添加到历史记录中。参数: state:储存一个对象,可以添加相关信息,可以使用history.state读取其中的内容。title: 历史记录的标题,url:创建的历史记录rul,进行历史记录操作时会跳转到该链接。
window.history.replaceState(),修改当前的history实体。
popstate事件,history实体改变时触发事件
window.history.state,会获得history实体中的state对象。
使用方法
取消默认的返回操作
添加一条history实体作为替代原来的history实体
mounted () { if(window.history&&window.history.pushState){ history.pushState(null,null,document.URL) window.addEventListener('popstate', this.goBack, false); } }, destroyed(){ window.removeEventListener('popstate',this.goBack,false); }, methods:{ goBack(){ this.$router.replace({path:'/'}); //replace替换原路由,作用是避免回退死循环 } }