Greasy Fork 支持简体中文。

稿定去水印6.27

这个脚本仅用于个人学习和研究,使用时请自行承担风险。代码已更新,联系:xhcc2023

// ==UserScript==
// @name         稿定去水印6.27
// @namespace    https://greasyfork.org/en/users/1324676-jack-han
// @version      2024.06.27.181
// @description  这个脚本仅用于个人学习和研究,使用时请自行承担风险。代码已更新,联系:xhcc2023
// @author       jack-han
// @match        https://www.gaoding.com/editor/design?*
// @match        https://www.focodesign.com/editor/design?*
// @match        https://www.focodesign.com/editor/odyssey?template_id=*
// @grant        none
// @license      Creative Commons (CC)

// ==/UserScript==

(function() {
    'use strict';
    // 设置用户代理为移动设备代理
    const mobileUserAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1';
    Object.defineProperty(navigator, 'userAgent', {
        get: function() {
            return mobileUserAgent;
        },
        configurable: true
    });
    console.log('nowBB:', navigator.userAgent); // 在控制台输出当前用户代理

    // 直接调用下载图片的函数,无需密钥验证
    function downloadImg() {
        let imgDom = document.querySelector('.infinite-canvas');
        if (!imgDom) {
            imgDom = document.querySelector('.editor-canvas');
        }
        if (imgDom) {
            var root = document.documentElement;
            root.style.overflow = 'auto'; // 设置页面滚动
            const canvas = document.createElement('canvas');
            const width = parseInt(window.getComputedStyle(imgDom).width, 10); // 获取元素宽度
            const height = parseInt(window.getComputedStyle(imgDom).height, 10); // 获取元素高度
            let scale = 1; // 定义缩放比例
            canvas.width = width * scale; // 设置canvas宽度
            canvas.height = height * scale; // 设置canvas高度
            canvas.style.width = width + 'px'; // 设置canvas样式宽度
            canvas.style.height = height + 'px'; // 设置canvas样式高度

            // 忽略某些元素
            Array.from(document.querySelectorAll('.editor-layout-current div'))
                .filter(el => el.classList.length === 0 && el.childNodes.length === 0)
                .forEach(el => {
                    el.setAttribute('data-html2canvas-ignore', ''); // 设置属性以忽略这些元素
                });

            // 使用html2canvas将元素转换为canvas
            html2canvas(imgDom, {
                canvas: canvas,
                scale: scale,
                useCORS: true, // 允许跨域
            }).then(canvas => {
                let dataURL = canvas.toDataURL('image/png'); // 获取canvas的图片数据URL
                const el = document.createElement('a'); // 创建一个a标签用于下载
                el.download = 'PIC.png'; // 设置下载文件名
                el.href = dataURL; // 设置a标签的href属性为图片数据URL
                document.body.append(el); // 将a标签添加到body中
                el.click(); // 模拟点击a标签下载图片
                el.remove(); // 下载完成后移除a标签
            });
        } else {
            alert('无法找到截图元素。'); // 如果找不到元素,提示用户
        }
    }

    // 添加工具按钮
    function addTool() {
        const button = document.createElement('button'); // 创建按钮元素
        button.style.position = 'absolute'; // 设置绝对定位
        button.style.zIndex = '999'; // 设置z-index
        button.style.top = '28px'; // 设置top位置
        button.style.left = '800px'; // 设置left位置
        button.style.width = '100px'; // 设置宽度
        button.style.height = '32px'; // 设置高度
        button.style.fontSize = '16px'; // 设置字体大小
        button.style.background = '#FFFF00'; // 设置背景颜色
        button.innerText = '下载截图'; // 设置按钮文本
        document.body.append(button); // 将按钮添加到body中
        button.onclick = downloadImg; // 给按钮添加点击事件,点击时调用downloadImg函数
    }
    addTool(); // 调用添加工具按钮的函数
})();