您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
browse the dark side
// ==UserScript== // @name Darksite // @namespace www.tim-greller.tk // @version 1.2.2 // @description browse the dark side // @author Tim L. Greller // @match *://*/* // @grant none // ==/UserScript== // init const var PREF_COLOR = { fg:"#c3c0b8", bg:"#1d1511" } // main function, executed at the end function main(){ document.querySelectorAll("*").forEach(adjustColor); if(window.location.host.includes("google")){ document.domain = "google.com"; //alert('execute `document.domain = "google.com";` in the console, to give Darksite.user.js permission to change the appearence of the google-site.'); window.setTimeout(function(){ applyPrefColors(window.top.document.querySelector("#main")); applyPrefColors(window.top.document.querySelector("#hdtb-msb")); applyPrefColors(window.top.document.querySelector("#topabar")); },6000); } else { applyPrefColors(window.top.document.body); } } // apply preferred back- and foreground color to an element e function applyPrefColors(e) { e.style.color = PREF_COLOR.fg; e.style.backgroundColor = PREF_COLOR.bg; } // reverse color of an element if it is bright function adjustColor(element) { var style = window.getComputedStyle(element); var background = new Color(style['background-color']); var text = new Color(style['color']); if (background.luma > 120) { element.style.color = text.inverted.toString(); element.style.backgroundColor = background.inverted.toString(); } else if (text.luma < 100) { element.style.color = text.inverted.toString(); } } // helper class for color calculations var Color = (function () { function toHex(num, padding) { return num.toString(16).padStart(padding || 2); } function parsePart(value) { var perc = value.lastIndexOf('%'); return perc < 0 ? value : value.substr(0, perc); } function Color(data) { if (arguments.length > 1) { this[0] = arguments[0]; this[1] = arguments[1]; this[2] = arguments[2]; if (arguments.length > 3) { this[3] = arguments[3]; } } else if (data instanceof Color || Array.isArray(data)) { this[0] = data[0]; this[1] = data[1]; this[2] = data[2]; this[3] = data[3]; } else if (typeof data === 'string') { data = data.trim(); if (data[0] === "#") { switch (data.length) { case 4: this[0] = parseInt(data[1], 16); this[0] = (this[0] << 4) | this[0]; this[1] = parseInt(data[2], 16); this[1] = (this[1] << 4) | this[1]; this[2] = parseInt(data[3], 16); this[2] = (this[2] << 4) | this[2]; break; case 9: this[3] = parseInt(data.substr(7, 2), 16); //Fall Through case 7: this[0] = parseInt(data.substr(1, 2), 16); this[1] = parseInt(data.substr(3, 2), 16); this[2] = parseInt(data.substr(5, 2), 16); break; } } else if (data.startsWith("rgb")) { var parts = data.substr(data[3] === "a" ? 5 : 4, data.length - (data[3] === "a" ? 6 : 5)).split(','); this.r = parsePart(parts[0]); this.g = parsePart(parts[1]); this.b = parsePart(parts[2]); if (parts.length > 3) { this.a = parsePart(parts[3]); } } } } Color.prototype = { constructor: Color, 0: 255, 1: 255, 2: 255, 3: 255, get r() { return this[0]; }, set r(value) { this[0] = value == null ? 0 : Math.max(Math.min(parseInt(value), 255), 0); }, get g() { return this[1]; }, set g(value) { this[1] = value == null ? 0 : Math.max(Math.min(parseInt(value), 255), 0); }, get b() { return this[2]; }, set b(value) { this[2] = value == null ? 0 : Math.max(Math.min(parseInt(value), 255), 0); }, get a() { return this[3] / 255; }, set a(value) { this[3] = value == null ? 255 : Math.max(Math.min(value > 1 ? value : parseFloat(value) * 255, 255), 0); }, get luma() { return .299 * this.r + .587 * this.g + .114 * this.b; }, get inverted() { return new Color(255 - this[0], 255 - this[1], 255 - this[2], this[3]); }, toString: function (option) { if (option === 16) { return '#' + toHex(this.r) + toHex(this.g) + toHex(this.b) + (this[3] === 255 ? '' : toHex(this[3])); } else if (option === '%') { if (this.a !== 1) { return `rgba(${this.r / 255 * 100}%, ${this.b / 255 * 100}%, ${this.g / 255 * 100}%, ${this.a / 255})`; } else { return `rgb(${this.r / 255 * 100}%, ${this.b / 255 * 100}%, ${this.g / 255 * 100})%`; } } else { if (this.a !== 1) { return `rgba(${this.r}, ${this.b}, ${this.g}, ${this.a})`; } else { return `rgb(${this.r}, ${this.b}, ${this.g})`; } } } }; return Color; }()); main();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址