当前位置: 首页 > news >正文

Vue2/Vue3实现全局/局部添加防篡改水印的效果。删除元素无效!更改元素属性无效!支持图片、元素、视频等等。

水印目的

版权保护:水印可以在图片、文档或视频中嵌入作者、品牌或版权所有者的信息,以防止未经授权的复制、传播或使用。当其他人使用带有水印的内容时,可以追溯到原始作者或版权所有者,从而加强版权保护。

身份识别:水印可以用作作者或品牌的标识符,使观众能够轻松识别内容的来源。这对于在社交媒体上分享内容或在网络上发布作品的个人、摄影师、设计师或公司来说尤为重要。

品牌宣传:水印可以帮助提升品牌知名度和曝光度。通过在图片或视频中添加品牌标识,品牌可以在内容被分享或传播时获得额外的宣传效果。

内容跟踪:通过在内容中添加水印,可以跟踪内容的传播和使用情况。这对于了解内容在网络上的传播路径、受众和影响力等信息是有帮助的。

Api介绍

MutationObserver API 是 Web API 的一部分,用于监视 DOM 树的变化。它允许开发者注册一个回调函数,该函数在指定的 DOM 节点或子树发生变化时被调用。MutationObserver 是一个强大的工具,可以用于监视并响应 DOM 中的变化,而无需使用传统的事件监听器。

主要的组成部分包括:

MutationObserver 对象:用于观察 DOM 树的变化。通过创建 MutationObserver 的实例并传入一个回调函数,可以开始监视指定节点或节点集合的变化。

观察目标:要监视的 DOM 节点或节点集合。MutationObserver 可以观察单个节点、节点列表,甚至整个文档的变化。

回调函数:MutationObserver 注册的回调函数在观察的节点发生变化时被调用。回调函数接收一个 MutationRecord 对象数组作为参数,该数组包含描述每个变化的信息。

变化记录(MutationRecord):描述 DOM 变化的对象。每个 MutationRecord 包含有关变化类型、受影响的节点、以及相关信息的详细信息。

MutationObserver API 的使用场景包括但不限于:

监视 DOM 中特定元素的属性变化。
监视子节点的添加、移除或替换。
监视文本内容的变化。
实时监视动态加载的内容变化。

实现逻辑:

1、通过手写组件的方式,将需要添加水印的内容放入组件内

2、通过props传入不同内容,实现自定义水印内容、字体大小、水印之间的间隔等等

3、通过canvas来画出水印文字,最后将canvas画出的内容转换为图片

4、通过MutationObserverAPI来监听水印元素被删除、被修改属性的变化

先上结果图片:

代码讲解在vue3版本中

Vue2版本:

代码:watermark组件

<template><div class="watermark" ref="parent"><slot></slot></div>
</template>
<script>export default {props: {// 传入的水印文字text: {type: String,required: true,},// 传入的文字大小fontSize: {type: Number,default: 32,},// 传入的文字间距gap: {type: Number,default: 50,},// 传入的文字颜色fillStyle:{type: String,default:'rgba(0,0,0,0.3)'}},data() {return {parent: null,div: null,observer: null,}},computed: {watermarkBg() {const canvas = document.createElement('canva
http://www.lryc.cn/news/399699.html

相关文章:

  • GuLi商城-商品服务-API-属性分组-获取分类属性分组
  • 安全测试理论
  • 序列化和反序列化
  • OpenCV中使用Canny算法在图像中查找边缘
  • 基于springboot+vue+uniapp的机电公司管理信息系统
  • 电子期刊制作实战教程:从零开始制作
  • 11.FreeRTOS_事件组
  • Python爬虫-爬取三国演义文本数据-bs4
  • html5——列表、表格
  • 【Python字符串攻略】:玩转文字,编织程序的叙事艺术
  • element form表单中密码框被自动赋值,并默认背景色为白色,手动输值后背景色才是自己配置的背景色,与表单的自动填充有关
  • 【UE5.1 角色练习】15-枪械射击——子弹发射物
  • Zynq7000系列FPGA中的DMA控制器的编程限制
  • 超简易高效的 AI绘图工具—与sd-webui一致界面,6G显存最高提升75%出图速率!(附安装包)
  • ArduPilot开源代码之OpticalFlow_backend
  • 设计模式探索:适配器模式
  • OpenCV 寻找棋盘格角点及绘制
  • 【深度学习】PyTorch深度学习笔记02-线性模型
  • 10.FreeRTOS_互斥量
  • EtherCAT总线冗余让制造更安全更可靠更智能
  • Android IdleHandler源码分析
  • Mac安装stable diffusion 工具
  • CVE-2024-6387Open SSH漏洞彻底解决举措(含踩坑内容)
  • python的简单爬取
  • 【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第60集-agent训练资讯APP重点推荐AI资讯内容(含视频)
  • 【学术会议征稿】第三届智能电网与能源系统国际学术会议
  • 01. 课程简介
  • iOS热门面试题(三)
  • ECS中postTransform.Value = float4x4.Scale(1, math.sin(elapsedTime), 1)
  • VLM技术介绍