Greasy Fork is available in English.
Automatically toggle built-in dark mode on resetera.com
当前为
// ==UserScript==
// @name ResetEra Auto Dark Mode
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Automatically toggle built-in dark mode on resetera.com
// @author Nathaniel Wu
// @match *.resetera.com/*
// @license Apache-2.0
// @supportURL https://gist.github.com/Nathaniel-Wu/13f3c865e190c2b182e41b9978c49782
// @grant none
// ==/UserScript==
(function () {
'use strict';
const setDarkMode = on => {
let switches = document.querySelectorAll('div[data-content="navigation"] a[data-xf-click="thstyleswitch"]');
let dark_switch = null, light_switch = null, is_light;
switches.forEach(e => {
let innerText = e.innerText.toLowerCase();
if (Boolean(innerText.match(/light/)))
light_switch = e;
else if (Boolean(innerText.match(/dark/)))
dark_switch = e;
});
if (!(Boolean(dark_switch) && Boolean(light_switch))) {
console.log('site updated, current script no longer works');
return;
}
let light_switch_parent = light_switch.closest('li.re_styleSwitch');
if (!((is_light = light_switch_parent.classList.contains('re_styleSwitch--hide')) || light_switch_parent.classList.contains('re_styleSwitch--show')))
is_light = Boolean(light_switch_parent.getAttribute('style').match(/display:\s*none/));
if (on && is_light)
dark_switch.click();
else if (!on && !is_light)
light_switch.click();
}
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);
}
})();