grayBackgroundColor

将网页背景色改为护眼灰

目前为 2016-07-12 提交的版本。查看 最新版本

// ==UserScript==
// @name			grayBackgroundColor
// @namespace	https://github.com/sakuyaa/gm_scripts
// @author			sakuyaa
// @description	将网页背景色改为护眼灰
// @include			*
// @version			1.0
// @compatible	firefox 22
// @grant			GM_addStyle
// @note				配合browser.display.background_color;#DCDCDC使用
// @run-at			document-end
// ==/UserScript==
(function() {
	var grayValue = 215;
	
	function grayElem(elem) {   //将元素变灰
		var elemStyle = window.getComputedStyle(elem, null);
		if (!elemStyle) {
			return;
		}
		if (elemStyle.backgroundColor != 'transparent') {
			var RGBValues = elemStyle.backgroundColor.match(/\d+/g);
			var red = RGBValues[0];
			var green = RGBValues[1];
			var blue = RGBValues[2];

			//从215-255压缩到215-225
			if (red >= grayValue && green >= grayValue && blue >= grayValue) {
				elem.style.backgroundColor = 'rgb( ' + Math.floor((red - grayValue) / 4 + grayValue) + ', ' + Math.floor((green - grayValue) / 4 + grayValue) + ', ' + Math.floor((blue - grayValue) / 4 + grayValue) + ')';
			}
		}
	}

	function grayBackgroundColor() {
		for (var elem of document.getElementsByTagName('*')) {
			grayElem(elem);
		}
		(new window.MutationObserver(mutations => {
			for (var mutation of mutations) {
				for (var elem of mutation.addedNodes) {
					if (elem.nodeType == 1) {   //元素节点
						grayElem(elem);
						for (var childNode of elem.getElementsByTagName('*')) {   //遍历所有子节点
							grayElem(childNode);
						}
					}
				}
			}
		})).observe(document.body, {
			childList: true,
			subtree: true
		});
	}

	function fixNotGray() {   //去除一些背景为空白图的网站
		switch (window.location.hostname) {
		case 'www.w3school.com.cn':
			GM_addStyle('#wrapper {background: #dcdcdc none !important;}');
			return;
		}
		var herf = window.location.href;
		if (/^https?:\/\/tieba\.baidu\.com\/f\?.+/i.test(herf)) {
			GM_addStyle('.forum_content {background: #dcdcdc none !important;}');
		}
	}

	grayBackgroundColor();
	fixNotGray();
})();

QingJ © 2025

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