背景
为了保护版权,常常需要为页面添加水印,常见的有以下几种方法:
css伪元素
canvas
背景图
svg
防篡改
添加水印比较简单,难点在于如何最大程度的防止篡改和删除页面的水印。
原理:监听水印元素的变化,出现变化把水印元素清除,再重新生成一个,清除变动记录,继续监听
我是水印
1 2 3 4 5 6 7 8 9 10 11
| #wm { width: 100%; height: 100%; position: fixed; top: 0; left: 0; pointer-events: none; text-align: center; margin-top: 200px; font-size: 30px; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| const mutationObserver = new MutationObserver((mutationsList, observer) => {
console.log('mutationsList', mutationsList); console.log('observer', observer) if (mutationsList.length > 0) { if (document.getElementById('wm')) document.body.removeChild(document.getElementById('wm')) const dom = document.createElement('div') dom.setAttribute('id', 'wm') dom.innerHTML = '我是水印' document.body.appendChild(dom) mutationObserver.takeRecords() mutationObserver.disconnect() observe() } })
function observe() { mutationObserver.observe(document.getElementById('wm'), { attributes: true, attributeOldValue: true, attributeFilter: ['class', 'src'], characterData: true, characterDataOldValue: true, childList: true, subtree: true, }); }
observe()
|