修改 font的文本信息_页面水印 (防删、防浏览器修改元素、可配置关闭)

c9ee18147398b2e071542a44f245b44d.png

作者:蓝海00

转载链接:https://www.jianshu.com/p/eaccb1ea73f9

之前在网上找了一段代码,可以实现页面水印,但只实现了防止删除,用浏览器审查元素修改元素的属性并未拦截,display:none 直接没了... 故而只能放下我CV程序员的帽子自己丰富代码,新增了可配置某个页面关闭水印和防浏览器修改元素style和class。

498c9cefbdb907f239d2519f5f43d91d.png
  • 新增一个ts文件命名随意
let watermark: any = {};// 水印文字let text: any = "默认";// 水印idconst id = '1.23452384164.123412416';let timeId: any = null;const setWatermark = (str: any) => {    if (document.getElementById(id) !== null) {        document.body.removeChild((document as any).getElementById(id));    }    //创建一个画布    const can = document.createElement('canvas');    //设置画布的长宽    can.width = 120;    can.height = 120;    const cans: any = can.getContext('2d');    //旋转角度    cans.rotate(-15 * Math.PI / 180);    cans.font = '18px Vedana';    //设置填充绘画的颜色、渐变或者模式    cans.fillStyle = 'rgba(200, 200, 200, 0.40)';    //设置文本内容的当前对齐方式    cans.textAlign = 'left';    //设置在绘制文本时使用的当前文本基线     cans.textBaseline = 'Middle';    //在画布上绘制填色的文本(输出的文本,开始绘制文本的X坐标位置,开始绘制文本的Y坐标位置)    cans.fillText(str, can.width / 8, can.height / 2);    const div = document.createElement('div');    div.id = id;    div.style.pointerEvents = 'none';    div.style.top = '0';    div.style.left = '0';    div.style.position = 'fixed';    div.style.zIndex = '100000';    div.style.width = document.documentElement.clientWidth + 'px';    div.style.height = document.documentElement.clientHeight + 'px';    div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat';    document.body.appendChild(div);    return id;}const config = {    // childList: true,    attributes: true,    // characterData: true,    subtree: true,    attributeFilter: ["class", "style"]    // attributeOldValue: true,    // characterDataOldValue: true};const mutationCallback = (mutationList: any) => {    for (const mutation of mutationList) {        const type = mutation.type;        switch (type) {            case "childList":                // id = setWatermark(str);                // console.log("节点被删除或添加");                break;            case "attributes":                setWatermark(text);                console.log(`${mutation.attributeName}属性修改了`);                break;            case "subtree":                // console.log("子树被修改");                break;            default:                break;        }    }};// 创建 MutationObserver 实例const observer = new MutationObserver(mutationCallback);// 该方法只允许调用一次watermark.set = (str: any) => {    text = str;    let id = setWatermark(text);    // 禁止删除    timeId = setInterval(() => {        if (document.getElementById(id) === null) {            id = setWatermark(text);        }    }, 500);    // 开始监控目标节点    observer.observe(document.body, config);    window.onresize = () => {        setWatermark(text);    };}// 关闭水印watermark.close = () => {    clearInterval(timeId)    const parent = document.body;    const child = document.getElementById(id);    if (child != null) {        parent.removeChild(child);    }    observer.disconnect()}export default watermark;
  • 直接调用
    import Watermark from "@/utils/watermark";
  • 开启水印
    Watermark.set("蓝海")
  • 关闭水印
    Watermark.close()


作者:蓝海00
转载链接:https://www.jianshu.com/p/eaccb1ea73f9

Tui-image-editor 是一个基于浏览器的图片编辑器,它允许用户进行图片的编辑操作,包括但不限于裁剪、旋转、添加文本水印等。要自定义文本水印的样式,通常需要使用编辑器提供的配置选项或API来设置水印文本的字体、大小、颜色、位置等属性。 1. 查阅文档:首先,你需要查阅 Tui-image-editor 的官方文档,了解其提供的 API 或配置项,确定哪些属性可以用来定制文本水印的样式。 2. 配置水印属性:根据文档,你可以通过配置对象来设置文本水印的各种样式。例如,设置 `watermarkText` 属性为你要添加的文本内容,`watermarkFontSize` 为字体大小,`watermarkFontFamily` 为字体类型,`watermarkColor` 为字体颜色等。 3. 应用配置:在创建 Tui-image-editor 的实例时,将配置对象传递给编辑器。这样,当用户添加水印时,编辑器会根据你设置的样式来显示文本水印。 下面是一个简单的示例代码,展示如何使用 Tui-image-editor 设置文本水印样式: ```javascript // 创建编辑器实例 var editor = new tui.ImageEditor(document.getElementById('my-editor'), { // 其他基础配置... usageStatistics: false }); // 设置文本水印的样式 editor.setWatermark({ text: '自定义文本', // 这里是你要显示的水印文本 fontSize: 20, // 字体大小 fontFamily: 'Arial', // 字体类型 color: '#000000', // 字体颜色 position: 'bottom', // 水印位置,可以是 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right' padding: 20 // 水印与图片边缘的距离 }); // 在适当的时候触发添加水印的操作 editor.addWatermark(); ``` 请注意,上述代码仅为示例,实际使用时需要根据 Tui-image-editor 的具体版本和API进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值