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 相关文章推荐
深入分析jquery解析json数据
Dec 09 Javascript
Jquery全选与反选点击执行一次的解决方案
Aug 14 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
May 27 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
Jul 10 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
JS实现title标题栏文字不间断滚动显示效果
Sep 07 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
Apr 10 Javascript
AngularJs+Bootstrap实现漂亮的计算器
Aug 10 Javascript
jQuery使用each遍历循环的方法
Sep 19 jQuery
jQuery实现ajax的嵌套请求案例分析
Feb 16 jQuery
layui实现数据分页功能(ajax异步)
Jul 27 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
PHP开发大型项目的一点经验
2006/10/09 PHP
PHP与已存在的Java应用程序集成
2006/10/09 PHP
如何将数据从文本导入到mysql
2006/10/09 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
利用Python复制文件的9种方法总结
2019/09/02 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
pytorch masked_fill报错的解决
2020/02/18 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
医学生毕业自我鉴定
2014/03/26 职场文书
小学教师年度个人总结
2015/02/05 职场文书
工程部主管岗位职责
2015/02/12 职场文书
vue elementUI表格控制对应列
2022/04/13 Vue.js
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电