// ==UserScript== // @name Global Darkmode // @name:ko 글로벌 다크모드 // @name:jp グローバルダークモード // @name:zh-TW 全局暗模式 // @name:zh-CN 全局暗模式 // @description Turn only bright websites to dark. // @description:ko 밝은 색의 웹 사이트들만 어둡게 만듭니다. // @description:jp 明るいウェブサイトだけを暗くします。 // @description:zh-TW 它只會將明亮的網站變為黑暗。 // @description:zh-CN 它只会将明亮的网站变为黑暗。 // @namespace https://ndaesik.tistory.com/ // @version 2021.12.21.20:40 // @author ndaesik // @icon https://www.google.com/s2/favicons?domain=earth.google.com // @include * // @downloadURL none // ==/UserScript== const bodyH = window.parent.document.body.offsetHeight, elems = document.querySelectorAll("body > :not(script)"), apply = () => {document.head.appendChild(drkMo)}, drkMo = document.createElement("style") drkMo.innerText = ` :root {color-scheme:dark;color:#000} html * {color-scheme:light!important;text-shadow:0 0 .1px} html body {background:none!important} html, html :is(i, img, image, embed, video, canvas, option, object, :fullscreen:not(iframe), iframe:not(:fullscreen)), html body>* [style*="url("]:not([style*="cursor:"]):not([type="text"]) {filter:invert(1)hue-rotate(180deg)!important} html body>* [style*="url("]:not([style*="cursor:"]) :not(#⁠), html:not(#⁠) :is(canvas, option, object) :is(i, img, image, embed, video), html:not(#⁠) video:fullscreen{filter:unset!important}` function whiteChecker(m,m2=0) { function n(n) {return parseInt(getComputedStyle(document.querySelectorAll(m)[m2], null).getPropertyValue("background-color").match(/\d+/g)[n])}; return (n(0)*0.299+n(1)*0.587+n(2)*0.114) > 186 || n(3) == 0 // return true when it's background is whitish }; if ((self == top && bodyH != 0 || self != top) && (whiteChecker("html") && whiteChecker("body"))) apply(); if (bodyH == 0) {for (var a = 0, j = elems.length; a < j ; a++) {if (elems[a].scrollHeight > window.innerHeight && whiteChecker("body > :not(script)",a)) apply();}};