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动画效果类封装代码
Aug 28 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
Feb 22 Javascript
jquery.form.js用法之清空form的方法
Mar 07 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
Aug 10 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
May 18 Javascript
json定义及jquery操作json的方法
Oct 03 Javascript
快速实现jQuery多级菜单效果
Feb 01 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
Apr 13 jQuery
利用npm 安装删除模块的方法
May 15 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
Jan 15 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正则表达式(regar expression)
2011/09/10 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
php防止sql注入代码实例
2013/12/18 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
简单的JS多重继承示例
2008/03/13 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
学校办公室主任职责
2013/12/27 职场文书
安全演讲稿开场白
2014/08/25 职场文书
贪污检举信范文
2015/03/02 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
表扬信格式模板
2015/05/05 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
入党转正申请报告
2015/05/15 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
Nginx配置https的实现
2021/11/27 Servers