vue 实现检测网络状态的组件 offline-handler

主要利用浏览器的 offline 和 online 事件来给出提示。

template
<template>
    <div v-if="mask" class="offline-mask">
        <h2 class="offline-mask-title"> {{ offlineTitle }} </h2>
    </div>
</template>
script
<script>
export default {
    name: 'offlineHandler',
    props: {
        offlineTitle: {
            type: String,
            default: '网络已断开,请检查网络'
        },
        onlineTitle: {
            type: String,
            default: '网络已连接'
        }
    },
    data () {
        return {
            mask: false
        }
    },
    mounted () {
        window.addEventListener('offline', this.eventHandler)
        window.addEventListener('online', this.eventHandler)
    },
    beforeDestroy () {
        window.removeEventListener('offline', this.eventHandler)
        window.removeEventListener('online', this.eventHandler)
    },
    methods: {
        eventHandler (event) {
            let { offlineTitle, onlineTitle } = this
            const type = event.type === 'offline' ? 'error' : 'success'
            const title = type === 'error' ? offlineTitle : onlineTitle
            // element 的提示, UI不同这里换下
            this.$message({
                message: title,
                type: type
            })
            setTimeout(() => {
                this.mask = event.type === 'offline'
            }, 1500)
        }
    }
}
</script>
style
<style lang="less">
.offline-mask {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    z-index: 999;
    transition: position 2s;
    display: flex;
    align-items: center;
    justify-content: center;
    .offline-mask-title {
        color: rgba(0, 0, 0, .8);
    }
}
</style>

在系统首页引用该组件即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值