直接上代码
function setWatermark(text) {
const id = '__global_watermark';
const existing = document.getElementById(id);
if (existing) document.body.removeChild(existing);
//创建canvas画板,用作单个水印图片生成
const canvas = document.createElement('canvas');
canvas.width = 200;
canvas.height = 150;
//创建画笔,将水印文本写入canvas对象
const ctx = canvas.getContext('2d');
ctx.rotate(-20 * Math.PI / 180);
ctx.font = '16px sans-serif';
ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillText(text, canvas.width / 2, canvas.height / 2);
//转换为base64
const base64Url = canvas.toDataURL();
//创建div节点,用于显示水印
const div = document.createElement('div');
div.id = id;
div.style.pointerEvents = 'none';
div.style.position = 'fixed';//固定定位
div.style.top = '0';
div.style.left = '0';
div.style.zIndex = '9999';
div.style.width = '100%';
div.style.height = '100%';
div.style.background = `url('${base64Url}') repeat`;//自动repeat铺满屏幕
document.body.appendChild(div);
//监听页面变化
const observer = new MutationObserver(() => {
//如果水印删掉就重新打上
if (!document.getElementById(id)) {
setWatermark(text);//打水印
}
});
observer.observe(document.body, {
childList: true,//监听子节点变化
});
}
微信扫码查看本文
发表评论