项目中添加水印

2023-11-02

1.在libs文件夹下新建watermark.js文件

watermark.js文件下代码:

let watermark = {}

let setWatermark = (str) => {
  let id = '1.23452384164.123412415'

  if (document.getElementById(id) !== null) {
    document.body.removeChild(document.getElementById(id))
  }

  let can = document.createElement('canvas')
  can.width = 500
  can.height = 250

  let cans = can.getContext('2d')
  cans.rotate(-20 * Math.PI / 180)
  cans.font = '14px Microsoft JhengHei'
  cans.fillStyle = '#dddddd'
  cans.textAlign = 'left'
  cans.textBaseline = 'Middle'
  cans.fillText(str, can.width / 3, can.height / 2)

  let div = document.createElement('div')
  div.id = id
  div.style.pointerEvents = 'none'
  div.style.top = '70px'
  div.style.left = '0px'
  div.style.position = 'fixed'
  div.style.zIndex = '100000'
  div.style.width = document.documentElement.clientWidth - 100 + 'px'
  div.style.height = document.documentElement.clientHeight - 100 + 'px'
  div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'
  document.body.appendChild(div)
  return id
}

// 该方法只允许调用一次
watermark.set = (str) => {
  let id = setWatermark(str)
  setInterval(() => {
    if (document.getElementById(id) === null) {
      id = setWatermark(str)
    }
  }, 500)
  window.onresize = () => {
    setWatermark(str)
  }
}

export default watermark

2.在router文件夹下的index.js中引入watermark.js文件

import watermark from '../libs/watermark';

router.afterEach((to) => {
  Util.openNewPage(router.app, to.name, to.params, to.query);
  ViewUI.LoadingBar.finish();
  window.scrollTo(0, 0);
  if(Cookies.get("userInfo")) {
    // 添加水印
      watermark.set(JSON.parse(Cookies.get("userInfo")).nickname);
  }
});

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目中添加水印 的相关文章

随机推荐

  • 安装教程rtx2080ti_Ubuntu18.04上安装RTX 2080Ti显卡驱动

    上了RTX 2080Ti显卡后 原来Ubuntu18 04内置的驱动和PPA安装的都不运作了 安装NVidia官网下载的驱动可以跑起来 但是需要费一些周折 1 禁用系统默认显卡驱动 打开系统黑名单 sudo gedit etc modpro
  • 网页游戏《天书世界》屌丝修仙记

    天书世界修仙 无限小号刷打宝塔 得到的金钱数据对比 终极玩法 天书世界 修仙 看了一些玄幻修仙小说 主人公屌丝逆袭白富美的攻略只有一个 就是不同常人的隐藏技能 作为工程师 羡慕没鸟用 还是实践一下 看看是否有潜质 于是搞了一个网页游戏 耍耍
  • JAVA面试题汇总

    JAVA面试题汇总 一 java基础篇 1 final 关键字的作用 被 final 修饰的类不可以被继承 被 final 修饰的方法不可以被重写 被 final 修饰的变量不可以被改变 如果修饰引用 那么表示引用不可变 引用指向的内容可变
  • Mybatis中的statementType="STATEMENT"使用注意

    今天遇到如下问题 Cause com mysql jdbc exceptions jdbc4 MySQLSyntaxErrorException You have an error in your SQL syntax check the
  • vulnhub靶场 DC-1

    过程曲曲折折 中途还看了下题解才断断续续的完成这个靶场 只能说技术不到家 攻击机 kali ip 192 168 16 134 靶场 ip 192 168 16 149 首先是到vulnhub官网去下载DC 1的靶场这里就不讲如何下载了 直
  • 【100天精通python】Day34:使用python操作数据库_ORM(SQLAlchemy)使用

    目录 专栏导读 1 ORM 概述 2 SQLAlchemy 概述 3 ORM SQLAlchemy使用 3 1 安装SQLAlchemy 3 2 定义数据库模型类 3 3 创建数据表 3 4 插入数据 3 5 查询数据 3 6 更新数据 3
  • SpringBoot 系统全局异常处理

    1 编写系统全局异常处理类要求 1 定义全局异常处理类 使用 ControllerAdvice 注解标签修饰 2 处理指定异常类信息 通过 ExceptionHandler 注解标签修饰 3 处理指定异常类是否向前端返回错误信息 如果需要向
  • Restful API 的设计规范

    Restful API 的设计规范 Restful API 的设计规范 1 URI URI规范 资源集合 vs 单个资源 避免层级过深的URI 对Composite资源的访问 2 Request HTTP方法 安全性和幂等性 复杂查询 Bo
  • Effective STL学习

    引言 以下为个人的一些读书心得 对于部分比较浅显易懂的就不再赘述 只是日常使用中不太会留意到的加以解释 第一章 容器 第一条 慎重选择容器类型 第二条 不要试图编写独立于容器类型的代码 第三条 确保容器中的对象拷贝正确而高效 第四条 调用e
  • Android 模拟双击点赞脚本

    以下代码通过GPT3 5生成 bin bash 点击次数范围 CLICK COUNT MIN 20 CLICK COUNT MAX 30 每次点击间隔范围 CLICK INTERVAL MIN 3000 CLICK INTERVAL MAX
  • STM32F103C8T6在线升级 IAP

    stm32程序每次执行都会从基地址0x800 0000开始执行 IAP程序升级的执行是在bootloader引导文件执行后 进行加载 跳转APP程序 所以每次上电后进入BootLoader判断是否需要升级 如果升级则接受bin文件 如果不升
  • 关于micropython无法计算MD5的问题 AttributeError: ‘module‘ object has no attribute ‘md5‘

    不可能 绝对不可能 我大MPY不能算md5 我一试还特么真是 文档写的明明白白 一跑就是没有方法 AttributeError module object has no attribute md5 mpy 你在干什么 这个错误好几年没有修
  • 容器部署虚拟机还是物理服务器,容器docker装在虚拟机上吗

    容器 无论是虚拟机还是物理机 都是硬件 基础设施的一种交付方式 本质上是一个层次的 而容器主要要解决以软件为中心的系列问题 开发 测试 部署 发布 运行 在虚拟机中运行容器 已经成为一种实践中的惯例 比如 AWS的container服务就是
  • JVM--基础--26.1--工具--jps

    JVM 基础 26 1 工具 jps 1 介绍 查看所有的jvm进程 包括进程ID 进程启动的路径等等 2 语法 2 1 格式 jps options hostid 2 2 参数说明 2 2 1 options q 只输出java进程的进程
  • el-date-picker 兼容IE浏览器

    一 问题描述 element组件之el date picker 在chrome浏览器中正常显示 而在IE浏览器却无法显示值 此时 需要设置value format属性
  • window.open同时打开多个页面

    在项目中遇到一个问题 需要点击按钮以后同时打开两个页面 我使用了window open方法 但是最后的表现是只打开了第一个 第二个被吞了 调试的浏览器是chrome 然后在浏览器地址栏的右边弹出一个小图标 点击发现是浏览器自动拦截弹出式窗口
  • Storm 常见问题

    原文 http weyo me pages techs storm questions Storm 安装与运维问题 运行 storm 命令报错 出现语法错误 File home storm apache storm 0 9 3 bin st
  • 浮点数转日期

    在实际工作中发现 在导入excel时 读取cell时 经常有人将日期变成了一个double类型 该double类型的整数部分表示1900年以来的天数 小数表示当天的描述 因此 在Python中 就可以用timedelta进行加减 计算出该d
  • scrapy的注意点的问题

    1 以豆瓣网为例分享一下scrapy使用中需要注意的地方 2 注意点 response xpath方法的返回结果是一个类似list的类型 其中包含的是selector对象 操作和列表一样 但是有一些额外的方法 extract 返回一个包含有
  • 项目中添加水印

    1 在libs文件夹下新建watermark js文件 watermark js文件下代码 let watermark let setWatermark str gt let id 1 23452384164 123412415 if do