You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
使用MutationObserver构造函数,新建一个观察器实例,实例的有一个回调函数,该回调函数接受两个参数,第一个是变动数组(包含一系列变动记录MutationRecord),第二个是观察器实例。MutationObserver 的实例的observe方法用来启动监听,它接受两个参数。第一个参数:所要观察的 DOM 节点,第二个参数:一个配置对象,指定所要观察的特定变动(config)。
目的:信息安全,信息泄露可追踪
特点:包含一段标识信息,同时需要覆盖足够的区域
需求:
那么怎么生成自定义背景图呢???
Canvas
HTMLCanvasElement.toDataURL该方法返回一个包含图片展示的data URI
SVG
SVG:可缩放矢量图形是一种基于可扩展标记语言,用于描述二维矢量图形的图形格式。使用SVG生成图片的方式和Canvas的方式类似,只是base64Url的生成方式换成了SVG
了解如何生成背景图之后,生成背景图后跟水印又有什么关系呢?开门见山的说吧,水印是可以通过在Dom节点上添加background-image属性来实现的。那么怎么给目标节点添加background-image属性呢?来看看
Vue
React
项目中如何实现的吧。下文提到的imageURI为上文提到的base64Url哦Vue
1.自定义指令,在需要打上水印的节点上添加
v-watermarked
指令react
现在你已经大概了解如何给页面打上水印了,你发现有什么问题了吗?其实这存在一个弊端,用户通过开发者工具动态更改DOM属性或者结构,就可以轻松删除掉水印。那么我们该如何阻止该行为呢?继续吧
MutationObserver
MutationObserver给开发者们提供了能在某个范围内的DOM树发生变化时作出适当反应的能力。
使用MutationObserver构造函数,新建一个观察器实例,实例的有一个回调函数,该回调函数接受两个参数,第一个是变动数组(包含一系列变动记录MutationRecord),第二个是观察器实例。MutationObserver 的实例的observe方法用来启动监听,它接受两个参数。第一个参数:所要观察的 DOM 节点,第二个参数:一个配置对象,指定所要观察的特定变动(config)。
MutationObserver只能监测到诸如属性改变,增删子节点等,但需要注意的是对于自己本身被删除,是没有办法的,可以用过监测父节点来达到要求。
拿阔爱的立方写个栗子吧,可以在监听到用户删除style属性操作,及时恢复水印。
The text was updated successfully, but these errors were encountered: