首页 前端知识 VUE实现页面添加水印

VUE实现页面添加水印

2024-11-05 23:11:47 前端知识 前端哥 165 948 我要收藏

在网站开发中,为了防止用户截图或录屏暴露敏感信息,追踪用户来源,需要在网页中添加水印。

方式一:集成watermark组件

1、添加watermark-dom依赖

npm install watermark-dom
复制

2、在AppMain.vue文件引入水印模块 

import watermark from "watermark-dom";
export default {
name: "AppMain",
mounted() {
// 加载水印
setInterval(() => {
const username = "我的水印";
const serviceTime = parseTime(new Date());
const option = {
watermark_txt: username + serviceTime, //水印的内容
// watermark_font: '微软雅黑', //水印字体 默认微软雅黑
// watermark_color: "#777", //水印字体颜色
// watermark_fontsize: "18px", //水印字体大小
// watermark_alpha: 0.1, //水印透明度,要求设置在大于等于0.005 默认0.15
// watermark_angle: 30, //水印倾斜度数
// watermark_width: 300, //水印宽度
// watermark_height: 100, //水印长度
// watermark_x: 100, //水印起始位置x轴坐标
// watermark_y: 0, //水印起始位置Y轴坐标
// watermark_x_space: 100, //水印x轴间隔
// watermark_y_space: 100, //水印y轴间隔
// watermark_rows: 4, //水印行数
// watermark_cols: 8, //水印列数
// watermark_parent_width:0, //水印的总体宽度(默认值:body的scrollWidth和clientWidth的较大值)
// watermark_parent_height:0, //水印的总体高度(默认值:body的scrollHeight和clientHeight的较大值)
// watermark_parent_node:null //水印插件挂载的父元素element,不输入则默认挂在body上
};
watermark.load(option);//加载水印
}, 1000)
// 缩放水印位置不变
window.addEventListener('resize', this.loadMark);
},
computed: {
},
beforeDestory(){
window.removeEventListener('resize', this.loadMark);
},
};
复制
//移除已加载水印
// watermark.remove();(不生效)
watermark.load({
watermark_txt: ' ' ,// 水印的内容 注意:不能是空字符串,必须是空格。
})
复制

3、访问页面,查看页面水印是否显示

方式二:使用canvas来画水印,防止水印信息被篡改

1、创建watermark.js

/**
* 水印添加方法
*/
let setWatermark = (str1, str2) => {
let id = 'watermark_id';
if (document.getElementById(id) !== null) {
document.body.removeChild(document.getElementById(id));
}
let can = document.createElement('canvas');
// 设置canvas画布大小
can.width = 250;
can.height = 120;
let cans = can.getContext('2d');
cans.rotate(-20 * Math.PI / 180); // 水印旋转角度
cans.font = '15px Vedana';
cans.fillStyle = '#000000';
cans.textAlign = 'center';
cans.textBaseline = 'middle';
cans.fillText(str1, can.width / 2, can.height) // 水印在画布的位置x,y轴
cans.fillText(str2, can.width / 2, can.height + 22);
let div = document.createElement('div')
div.id = id;
div.style.pointerEvents = 'none';
div.style.top = '40px';
div.style.left = '0px';
div.style.opacity = '0.15';
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;
}
// 添加水印方法
export const setWaterMark = (str1, str2) => {
let id = setWatermark(str1, str2);
if (document.getElementById(id) === null) {
id = setWatermark(str1, str2);
}
}
// 移除水印方法
export const removeWatermark = () => {
let id = 'watermark_id';
if (document.getElementById(id) !== null) {
document.body.removeChild(document.getElementById(id))
}
}
复制

2、在AppMain.vue文件引入

import { removeWatermark, setWaterMark } from '@/utils/watermark'
export default {
name: 'AppMain',
mounted() {
// 加载水印
setInterval(() => {
setWaterMark("我的水印",parseTime(new Date()))
}, 1000)
},
computed: {
},
beforeDestory(){
removeWatermark();
},
}
复制

3、访问页面,查看页面水印是否显示

转载请注明出处或者链接地址:https://www.qianduange.cn//article/20016.html
标签
评论
还可以输入200
共0条数据,当前/页
发布的文章

浅谈C#库之Newtonsoft.Json‌

2025-02-22 16:02:22

第十天:数据提取-JsonPath

2025-02-22 16:02:21

nlohmann/json安装与使用

2025-02-22 16:02:19

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!