iWhaleCloud-UI-Figma

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

// ==UserScript==
// @name         iWhaleCloud-UI-Figma
// @namespace    http://tampermonkey.net/
// @version      0.1.3
// @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 colorText = color.split('/').reduce((r, e) => {
                return r + "-" + e;
            });
            if (isIOS) {
                const colorBodyFormat = colorText.split("-").reduce((r, e) => {
                    return r.charAt(0).toUpperCase() + r.slice(1) + e.charAt(0).toUpperCase() + e.slice(1);
                });
                const code = "UIColor.adw" + colorBodyFormat;
                result.push(code);
            } else {
                const colorBodyFormat = colorText.split("-").reduce((r, e) => {
                    return r.charAt(0).toLowerCase() + r.slice(1) + "_" + e.charAt(0).toLowerCase() + e.slice(1);
                });
                const code = "adw_" + colorBodyFormat;
                result.push(code);
            }
        }

        if (result.length == 0) {
            alert("颜色未识别到");
            return
        }

        // 创建 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 fontDoms = document.getElementsByClassName('inspect_panels--typographyPanel--oBH2a')
        let result = [];
        for (let i = 0; i < fontDoms.length; ++i) {
            const maybeFontDom = fontDoms[i];
            const maybeFontStrings = maybeFontDom.textContent.split("Name");
            const maybeFontString = maybeFontStrings[1];
            const maybeFontStrings2 = maybeFontString.split("Font");
            const fontText = maybeFontStrings2[0];

            if (isIOS) {
                const fontFormat = fontText.split('.').reduce((r, e) => {
                    return r.charAt(0).toUpperCase() + r.slice(1) + e.charAt(0).toUpperCase() + e.slice(1);
                });
                const code = ".adw" + fontFormat;
                result.push(code);
            } else {
                const fontFormat = fontText.split('.').reduce((r, e) => {
                    return r.charAt(0).toLowerCase() + r.slice(1) + "_" + e.charAt(0).toLowerCase() + e.slice(1);
                });
                const code = "adw_" + fontFormat;
                result.push(code);
            }
        }

        if (result.length == 0) {
            alert("字体未识别到");
            return
        }

        // 创建 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);
        }
    }

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

    var isIOS = window.localStorage.getItem('FigmaIOS');

    if (isIOS == null) {
        if (confirm("是不是 iOS ?")) {
            window.localStorage.setItem('FigmaIOS', true);
            isIOS = true;
        } else {
            window.localStorage.setItem('FigmaIOS', false);
            isIOS = false;
        }
    } else {
        isIOS = isIOS == "true";
    }







})();

QingJ © 2025

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