iWhaleCloud-UI-Figma

这是一个 Figma 提取字号颜色脚本

目前為 2024-06-03 提交的版本,檢視 最新版本

// ==UserScript==
// @name         iWhaleCloud-UI-Figma
// @namespace    http://tampermonkey.net/
// @version      0.1.1
// @description  这是一个 Figma 提取字号颜色脚本
// @author       HolmesZhao
// @include      *://www.figma.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=figma.com
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    window.onbeforeunload = function(e) {
        let pid = getQueryVariable("pid")
        console.log(pid)
        if (pid != '' && pid != null) {
            window.localStorage.setItem('lanhu_current_pid', pid)
        }
        return;
    };

    var authorization = ""
    function listen() {
        var origin = {
            setRequestHeader: XMLHttpRequest.prototype.setRequestHeader
        }

        XMLHttpRequest.prototype.setRequestHeader = function (a, b) {
            if (arguments[0] == 'Authorization') {
                authorization = arguments[1]
            }
            origin.setRequestHeader.apply(this, arguments)
        }
    }
    listen()

    function getQueryVariable(variable) {
        let len = window.location.href.indexOf('?')
        if (len <= 0) { return false; }
        var query = window.location.href.substring(len + 1);
        var vars = query.split("&");
        for (var i=0;i<vars.length;i++) {
            var pair = vars[i].split("=");
            if(pair[0] == variable){return pair[1];}
        }
        return(false);
    }

    function addButton(name, marginLeft, top, fun) {
        var txt = document.createTextNode(name);
        var btn = document.createElement('button');
        btn.className = 'mmbutton';
        btn.style = "z-index: 9999; font-size: large; position: fixed; bottom: " + top +"px; right: " + (marginLeft) + "px;border:1px solid black; padding: 0 10px;";
        btn.onclick = fun;
        btn.appendChild(txt);
        document.body.appendChild(btn);
        return btn.offsetWidth;
    };

    function changeColor() {
        const colorDoms = document.getElementsByClassName('colors_inspect_panel--styleNameRow--RknQ9 inspect_panels--tallPropertyRow--oxnys inspect_panels--_basePropertyRow--StmAE inspect_panels--tallRow--W9eni')
        let result = [];
        for (let i = 0; i < colorDoms.length; ++i) {
            const colorDom = colorDoms[i];
            const color = colorDom.innerText;
            const colorHead = "Color";
            const colorBody = color.split('/')[1];
            const colorBodySplits = colorBody.split('-');
            const colorBodyFormat = colorBodySplits[0].charAt(0).toUpperCase() + colorBodySplits[0].slice(1) + colorBodySplits[1].charAt(0).toUpperCase() + colorBodySplits[1].slice(1);
            const code = "UIColor.adw" + colorHead + colorBodyFormat;
            result.push(code);
        }
        // 创建 textarea 元素
        let textarea = document.createElement("textarea");
        textarea.id = "copydom";
        textarea.style.opacity = "0"; // 设置不可见
        textarea.innerText = result;

        // 设置绝对定位
        textarea.style.position = "fixed";
        textarea.style.top = "0";
        textarea.style.left = "0";

        // 将 textarea 添加到 body 元素中
        document.getElementsByClassName('zoom_menu--zoomAmount--Qb6gL')[0].appendChild(textarea);

        var element = document.getElementById("copydom");
        element.select(); // 选择对象
        document.execCommand("Copy"); // 执行浏览器复制命令

        // 如果元素存在且有父元素,则从其父元素中移除该元素
        if (textarea && textarea.parentNode) {
            textarea.parentNode.removeChild(textarea);
        }
    }

    function changeFont() {
        const fontDom = document.getElementsByClassName('inspect_panels--typographyPanel--oBH2a')[0].getElementsByClassName('inspect_panels--copyableRow--0JP9W inspect_panels--highlightRow--fEWtj ellipsis--ellipsis--Tjyfa')[0]
        if (fontDom) {
            let fontText = fontDom.innerText;
            fontText = fontText.split('\n')[1];
            const fontHead = fontText.split('.')[0];
            const fontBody = fontText.split('.')[1];
            const fontFormat = fontHead.charAt(0).toUpperCase() + fontHead.slice(1) + fontBody.charAt(0).toUpperCase() + fontBody.slice(1);
            const code = ".adw" + fontFormat;

            // 创建 textarea 元素
            let textarea = document.createElement("textarea");
            textarea.id = "copydom";
            textarea.style.opacity = "0"; // 设置不可见
            textarea.innerText = code;

            // 设置绝对定位
            textarea.style.position = "fixed";
            textarea.style.top = "0";
            textarea.style.left = "0";

            // 将 textarea 添加到 body 元素中
            document.getElementsByClassName('zoom_menu--zoomAmount--Qb6gL')[0].appendChild(textarea);

            var element = document.getElementById("copydom");
            element.select(); // 选择对象
            document.execCommand("Copy"); // 执行浏览器复制命令
            // 如果元素存在且有父元素,则从其父元素中移除该元素
            if (textarea && textarea.parentNode) {
                textarea.parentNode.removeChild(textarea);
            }
        }
    }

    let btnWidth = addButton('复制颜色', 50, 20, changeColor);
    addButton('复制字体', btnWidth + 50, 20, changeFont);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址