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 相关文章推荐
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 Javascript
javascript数组快速打乱重排的方法
Jan 02 Javascript
JS不能跨域借助jquery获取IP地址的方法
Aug 20 Javascript
js滑动提示效果代码分享
Mar 10 Javascript
关于数据与后端进行交流匹配(点亮星星)
Aug 03 Javascript
Javascript动画效果(3)
Oct 11 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
Dec 14 Javascript
探究react-native 源码的图片缓存问题
Aug 24 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
validform表单验证的实现方法
Mar 08 Javascript
Layui点击图片弹框预览的实现方法
Sep 16 Javascript
微信小程序实现点赞业务
Feb 10 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
写一个用户在线显示的程序
2006/10/09 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
Python实现获取网站PR及百度权重
2015/01/21 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
python对html过滤处理的方法
2018/10/21 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
python 自定义装饰器实例详解
2019/07/20 Python
python支持多线程的爬虫实例
2019/12/21 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
工程测量与监理专业应届生求职信
2013/11/27 职场文书
门卫工作岗位职责
2013/12/17 职场文书
文科教师毕业的自我评价
2014/01/16 职场文书
优秀护士获奖感言
2014/02/20 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL