web 网页如何禁止别人移除水印【热度: 540】

关键词:前端防止移除水印

关于加水印的问题, 可以看这篇文档: #351

关于如何防止移除水印:

可以通过监听 DOM 的变化来检测是否有人删除水印,可以使用 MutationObserver API
MutationObserver 可以观察 DOM 树的变化,并在变化发生时触发回调函数。你可以在回调函数中检查是否有水印被删除,然后采取相应的措施。

以下是一个简单的示例代码,演示了如何使用 MutationObserver 监听 DOM 变化:

// 目标节点
const targetNode = document.body;

// 创建 MutationObserver 实例
const observer = new MutationObserver((mutationsList) => {
    for (let mutation of mutationsList) {
        // 检查是否有子节点被删除
        if (mutation.removedNodes.length > 0) {
            // 在此处判断是否有水印被删除
            // 如果水印被删除,则重新插入水印的 DOM 元素到目标节点
            // 例如: targetNode.appendChild(watermarkElement);
        }
    }
});

// 配置 MutationObserver
const config = { childList: true, subtree: true };

// 开始观察目标节点
observer.observe(targetNode, config);

在上述代码中,我们创建了一个 MutationObserver 实例,并通过 observe 方法将其绑定到目标节点上。在回调函数中,我们使用 mutation.removedNodes 来检查是否有子节点被删除,如果发现水印被删除,则可以采取相应的措施来重新插入水印的 DOM 元素。

需要注意的是,MutationObserver API 是现代浏览器提供的功能,在老旧的浏览器中可能不支持。因此,在实际使用时,你需要对浏览器的兼容性进行测试和处理。

另外,如果水印被删除后立即加回去,你可以在检测到水印被删除时,立即执行插入水印的代码,以确保水印能够迅速地重新出现在页面上。