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 相关文章推荐
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
javascript insertAfter()定义与用法示例
Jul 25 Javascript
JavaScript-html标题滚动效果的简单实现
Sep 08 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
JavaScript运动框架 链式运动到完美运动(五)
May 18 Javascript
使用angularjs.foreach时return的问题解决
Sep 30 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
Jan 27 jQuery
微信小程序开发实现的IP地址查询功能示例
Mar 28 Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 Javascript
新手入门带你学习JavaScript引擎运行原理
Jun 24 Javascript
layui lay-verify form表单自定义验证规则详解
Sep 18 Javascript
ES6之Proxy的get方法详解
Oct 11 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
php常用数组函数实例小结
2016/12/29 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
Javascript base64编码实现代码
2011/12/02 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
使用yeoman构建angular应用的方法
2017/08/14 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
js实现时钟定时器
2020/03/26 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
Python复制目录结构脚本代码分享
2015/03/06 Python
Python获取邮件地址的方法
2015/07/10 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Python GUI编程完整示例
2019/04/04 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
帮一个朋友写的求职信
2014/08/09 职场文书
士兵突击观后感
2015/06/16 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
Linux系统下安装PHP7.3版本
2021/06/26 PHP
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL