Vue实现页面添加水印功能


Posted in Javascript onNovember 09, 2019

创建watermark.js文件

let watermark = {}

let setWatermark = (str) => {
 let id = '1.23452384164.123412416';

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

 //创建一个画布
 let can = document.createElement('canvas');
 //设置画布的长宽
 can.width = 120;
 can.height = 120;

 let cans = can.getContext('2d');
 //旋转角度
 cans.rotate(-15 * Math.PI / 180);
 cans.font = '18px Vedana';
 //设置填充绘画的颜色、渐变或者模式
 cans.fillStyle = 'rgba(200, 200, 200, 0.40)';
 //设置文本内容的当前对齐方式
 cans.textAlign = 'left';
 //设置在绘制文本时使用的当前文本基线
 cans.textBaseline = 'Middle';
 //在画布上绘制填色的文本(输出的文本,开始绘制文本的X坐标位置,开始绘制文本的Y坐标位置)
 cans.fillText(str, can.width / 8, can.height / 2);

 let div = document.createElement('div');
 div.id = id;
 div.style.pointerEvents = 'none';
 div.style.top = '30px';
 div.style.left = '0px';
 div.style.position = 'fixed';
 div.style.zIndex = '100000';
 div.style.width = document.documentElement.clientWidth + 'px';
 div.style.height = document.documentElement.clientHeight + '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;

具体用法:

1.在App.vue文件中,导入该文件

import Watermark from '@/common/js/watermark'; //路径不要写错

2.在mounted函数中调用

mounted: function () {
 Watermark.set("水印内容")
}

注意内容:

一般我们的水印内容是当前用户的id或者姓名,在App.vue文件的mounted函数中有可能获取不到Vuex的用户信息。

我们一般在路由跳转的时候来进行用户的登录和权限的判断,所以我们可以将调用水印的方法放在router.afterEach()方法中,在router.beforeEach()方法中判断用户的登录和权限的判断,所以router.afterEach()方法中一定可以获取到vuex中的用户信息。

示例:

router.beforeEach((to, from, next) => {
 // 登录判断
 store.dispatch('getuser').then((user) => {
 if (to.path === '/') {
  if (user.isLeader) {
  next('/Summary');
  } else { next('/list'); }
 } else {
  next();
 }
 }).catch((error) => {
 if (error.message === 'noUser') {
  //返回登录界面
 } else {
  Dialog.confirm({
  title: '服务器错误',
  message: '获取用户信息失败,可尝试重新进入系统。',
  showCancelButton: false,
  showConfirmButton: false
  });
 }
 });
});
router.afterEach((to) => {
 /* 路由发生变化修改页面title */
 if (to.meta.title) {
 changTitle(to.meta.title);
 }
 Watermark.set(store.state.user.userId);
});

以上这篇Vue实现页面添加水印功能就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
屏蔽Flash右键信息的js代码
Jan 17 Javascript
javascript中不等于的代码是什么怎么写
Dec 29 Javascript
js取float型小数点后两位数的方法
Jan 18 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
javascript生成随机数方法汇总
Nov 12 Javascript
跟我学习javascript的var预解析与函数声明提升
Nov 16 Javascript
从零学习node.js之express入门(六)
Feb 25 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
Mar 06 Javascript
详解Angular的8个主要构造块
Jun 20 Javascript
使用element-ui table expand展开行实现手风琴效果
Mar 15 Javascript
javascript实现点击按钮切换轮播图功能
Sep 23 Javascript
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
Oct 05 Javascript
vue 实现特定条件下绑定事件
Nov 09 #Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
Nov 09 #Javascript
vue 根据选择条件显示指定参数的例子
Nov 09 #Javascript
在vue中动态添加class类进行显示隐藏实例
Nov 09 #Javascript
vue-resource:jsonp请求百度搜索的接口示例
Nov 09 #Javascript
解决vue 子组件修改父组件传来的props值报错问题
Nov 09 #Javascript
解决vue组件中click事件失效的问题
Nov 09 #Javascript
You might like
php分页代码学习示例分享
2014/02/20 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
python中定义结构体的方法
2013/03/04 Python
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
Python代码实现KNN算法
2017/12/20 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
Python学习笔记之装饰器
2020/08/06 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
如何用Django处理gzip数据流
2021/01/29 Python
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
培训督导岗位职责
2015/04/10 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫