vue项目增加水印

vue项目增加水印

最近项目要求在项目中增加水印,以体现安全性问题;
下面是在项目中的代码

<template>
<div class="xt-water-mark">
</div>
</template>
<script>
export default {
  name: 'xtWaterMark',
  data () {
    return {
      maskDiv: {}, // 当前显示的水印div节点DOM对象
      waterText:''
    }
  },
  mounted () {
    //获取当前登陆用户信息
    this.getUserInfo()
    // 确认DOM渲染后再执行
    this.$nextTick(() => {
      // 创建水印节点
      this.init()
    })
  },
  methods: {
      //获取当前登陆用户信息
    getUserInfo() {
        const user = JSON.parse(sessionStorage.getItem('userInfo')) || {}
        this.waterText = user.userName + '(' + user.userCode + ')' 
    },
    init () {
      // 查看页面上有没有,如果有则删除
      if (document.getElementById('_waterMark') !== null) {
          const childelement = document.getElementById('_waterMark')
          childelement.parentNode.removeChild(childelement)
      }
      const canvas = document.createElement('canvas')
      canvas.id = 'canvas'
      canvas.width = '200' // 单个水印的宽高
      canvas.height = '130'

      this.maskDiv = document.createElement('div')
      const ctx = canvas.getContext('2d')
      ctx.font = 'normal 18px Microsoft Yahei' // 设置样式
      ctx.fillStyle = 'rgba(112, 113, 114, 0.1)' // 水印字体颜色
      ctx.rotate(30 * Math.PI / 180) // 水印偏转角度
      ctx.fillText(this.waterText, 30, 20)
      const src = canvas.toDataURL('image/png')
      this.maskDiv.style.position = 'fixed'
      this.maskDiv.style.zIndex = '9999'
      this.maskDiv.id = '_waterMark'
      this.maskDiv.style.top = '0'
      this.maskDiv.style.left = '0'
      this.maskDiv.style.height = '100%'
      this.maskDiv.style.width = '100%'
      this.maskDiv.style.pointerEvents = 'none'
      this.maskDiv.style.backgroundImage = 'URL(' + src + ')'
      // 水印节点插到body下
      document.body.appendChild(this.maskDiv)
    },
    // 手动销毁水印DOM
    removeMaskDiv () {
      if (document.getElementById('_waterMark') !== null) {
        const childelement = document.getElementById('_waterMark')
        childelement.parentNode.removeChild(childelement)
      }
    },
    // 手动生成水印
    createMaskDiv () {
      this.init()
    }
  },

  beforeDestroy () {
    // 组件销毁时去除生成在body节点下的水印节点
      this.removeMaskDiv()
  }
}
</script>
<style>
</style>

在写代码时也有参考其他博主代码,不过忘记原博主文章地址,感谢道友们!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值