Thingiverse Dark Mode

A simple script which converts Thingiverse to a darker theme. Modified to to use MutationObserver idea taken from https://github.com/LuckDuracell/ThingiverseDark/

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Thingiverse Dark Mode
// @namespace    https://monkeyr.com/
// @version      v1.0.1
// @description  A simple script which converts Thingiverse to a darker theme. Modified to to use MutationObserver idea taken from https://github.com/LuckDuracell/ThingiverseDark/
// @author       mh, LuckDuracell
// @match        https://www.thingiverse.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=thingiverse.com
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    function activateBlackout(ele) {
        // Select all divs and inputs on the page
        const divs = document.querySelectorAll('div, input', ele);
        // Loop through the divs and inputs, setting the background and color properties
        for (let i = 0; i < divs.length; i++) {
            if (!(divs[i].className.includes("i-button left") || divs[i].textContent.startsWith("Report Thi"))) {
                divs[i].style.background = `rgba(1, 0, 9, ${(0.5 + (i + 1) / (divs.length))})`;
                if (divs[i].style.color === '#555') {
                    divs[i].style.color = 'white';
                }
            }
        }
    }


    const observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            if (mutation.addedNodes) {
                mutation.addedNodes.forEach(activateBlackout);
            }
        });
    });
    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    const css = [
        "@namespace url(http://www.w3.org/1999/xhtml);",
        "html body {color:#243aa2;}",
        "html a {color:#2b52fe!important}",
    ].join("\n");
    if (typeof GM_addStyle != "undefined") {
        GM_addStyle(css);
    } else if (typeof PRO_addStyle != "undefined") {
        PRO_addStyle(css);
    } else if (typeof addStyle != "undefined") {
        addStyle(css);
    } else {
        var node = document.createElement("style");
        node.type = "text/css";
        node.appendChild(document.createTextNode(css));
        var heads = document.getElementsByTagName("head");
        if (heads.length > 0) {
            heads[0].appendChild(node);
        } else {
            // no head yet, stick it whereever
            document.documentElement.appendChild(node);
        }
    }

})();