Reddit Auto Dark Mode

Automatically toggle built-in dark mode on reddit.com

目前為 2022-04-15 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Reddit Auto Dark Mode
// @namespace    http://tampermonkey.net/
// @version      0.9
// @description  Automatically toggle built-in dark mode on reddit.com
// @author       Nathaniel Wu
// @match        *.reddit.com/*
// @license      Apache-2.0
// @supportURL   https://gist.github.com/Nathaniel-Wu/f638b2fee2ece92742bfbf7d4db19f18
// @grant        none
// ==/UserScript==

(function () {
    'use strict';
    const setDarkMode = on => {
        if ((getComputedStyle(document.getElementsByTagName("header")[0].firstElementChild).getPropertyValue('--newRedditTheme-body').trim() == "#1A1A1B"/*subject to change*/) != on) {
            let repeat_until_successful = (function_ptr, interval) => {
                if (!function_ptr())
                    setTimeout(() => {
                        repeat_until_successful(function_ptr, interval);
                    }, interval);
            }
            repeat_until_successful(() => {
                let preferences_button = document.querySelector("#USER_DROPDOWN_ID"/*subject to change*/);
                if (preferences_button == null)
                    return false;
                if (document.evaluate('/html/body/div/div[@role="menu"]'/*subject to change*/, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue == null) {
                    preferences_button.click();
                    return false;
                }
                let night_mode_button = document.evaluate('/html/body/div/div[@role="menu"]//button/div[.="Dark Mode"]/../button'/*subject to change*/, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
                if (night_mode_button == null)
                    return false;
                night_mode_button.click();
                preferences_button.click();
                return true;
            }, 10);
        }
    }
    if (window.matchMedia) {// if the browser/os supports system-level color scheme
        setDarkMode(window.matchMedia('(prefers-color-scheme: dark)').matches);
        window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => setDarkMode(e.matches));
    } else {// otherwise use local time to decide
        let hour = (new Date()).getHours();
        setDarkMode(hour > 18 || hour < 8);
    }
})();

QingJ © 2025

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