Vue2.0组织浏览器返回事件

Prevent Browser Back for Vue2.0

模拟阻止(适用于PC,移动端):在需要阻止浏览器返回上一页的页面使用次插件,当点击浏览器返回上一页时使页面不做任何变化。

Install

npm install vue-prevent-browser-back --save

Usage

在需要阻止的页面单独引入,然后注入.

<template>
    <div>
    </div>
</template>
<script>
    import preventBack from 'vue-prevent-browser-back';//组件内单独引入
    export default {
        mixins: [preventBack],//注入
        data() {
            return {};
        }
    };
</script>

上面操作就OK了

附vue-prevent-browser-back 文件代码如下

const preventBack = {
    methods:{
        prevent_back(){
            let path = this.$route.fullPath;
            // 判断是否开启了后端支持
            if(this.$router.mode=='hash'){
                path = '#'+path;
            }
            window.pushStateFun = function(){
                let state = { 
                    title: null, 
                    url: path//要禁掉的页面
                }; 
                /* 
                    三个参数:
                    state:一个与指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数。如果不需要这个对象,此处可以填null。
                    title:新页面的标题,但是所有浏览器目前都忽略这个值,因此这里可以填null。
                    url:新的网址,必须与当前页面处在同一个域。浏览器的地址栏将显示这个网址。
                */
                window.history.pushState(state,null, path); //要禁掉的页面
            }
            var state = { 
                title: null, 
                url: path//要禁掉的页面
            }; 
            window.history.pushState(state, null, path); //要禁掉的页面
            window.addEventListener("popstate", window.pushStateFun, false);
        }
    },
    mounted() {
        // 判断组件是否有缓存
        if (this.$vnode && this.$vnode.data.keepAlive) {
            // if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) {
                // console.log('有缓存')
            // }
            return;
        }else{
            this.prevent_back();
        }
    },
    activated(){
        this.prevent_back();
    },
    beforeRouteLeave(to, from, next) {
        window.removeEventListener("popstate", window.pushStateFun, false);
        next();
    }
};
export default preventBack;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值