• vue中监听返回键


    问题:在项目中,我们常常有需求,当用户在填写表单时,点击返回的时候,我们希望加一个弹窗,确认离开吗,确认将保存为草稿

    解决方案:利用 H5的 pushstate(个人理解为增加页面栈)特性与onpopup事件

    分析:pushstate 从该方法名我们可以知道 是增加某种状态,会为history对象的length增加长度, 点击返回键的时候会触发onpopup事件(可以联想到 pop其实是数组删除的最后一个元素,符合  ‘栈’ 的思想);

              onpopup触发返回上一页,而 pushstate仅仅是从url上进行了改变,不会校验url的内容,页面不会改变,加入当前页面为 xxx/b.html,此时pushState(null,null,'a.html'),可以发现 url变了,而页面的内容并没有改变,我们可以通过这来造成一种无法返回的假象

    实施:  

          

     
    //注意:Dialog是一款弹窗的插件
    mounted: function() {
    //当前页面挂载的时候调用 返回键的监听方法
    this.listeningBack()

    }

     //当页面销毁的时候我们也要将事件监听销毁,以免影响其他内容

     destroyed:function(){

       window.onpopstate = null

    },

    methods:{

        

    //监听返回键
    listeningBack() {

    var that = this;//window.onpopstate方法指向window,所以要储存一下当前的vue实例
    let route = '上一页';//根据业务逻辑的上一页决定
    window.onpopstate = function() {

    //将当前页面window.location.href 放入页面栈当中
    history.pushState({}, null, window.location.href);
    Dialog.alert({
    title: '标题',
    message: '确认返回吗,你所填写的内容将保存为草稿'
    }).then(() => {
    that.$router.push({

    path:route

    })
    }).catch(
    console.log('取消返回,留在当前页面')
    );

    
    

    }
    },

    }

    
    
  • 相关阅读:
    Python实战之SocketServer模块
    CentOS出错You don't have permission to access on this server
    系统瓶颈分析
    loadrunner支持https协议的操作方法-经验总结
    Loadrunner上传与下载文件脚本
    Loadrunner之HTTP接口测试脚本实例
    Android界面性能调优手册
    Loadrunner11.0 录制手机App脚本的方法
    资源监控工具--spotlight
    Jmeter常见问题
  • 原文地址:https://www.cnblogs.com/tony-stark/p/11420010.html
Copyright © 2020-2023  润新知