Greasy Fork is available in English.

护眼脚本

修改网页背景色,让网页背景色偏白的部分变成乡土黄、豆沙绿或者浅色灰,更加护眼。默认护眼色是乡土黄。

// ==UserScript==
// @name        护眼脚本
// @namespace   http://www.houhongwei.xyz
// @description 修改网页背景色,让网页背景色偏白的部分变成乡土黄、豆沙绿或者浅色灰,更加护眼。默认护眼色是乡土黄。 
// @icon        http://d.lanrentuku.com/down/png/1406/40xiaodongwu/tropical-fish.png
// @include     http*
// @include     ftp* 
// @version     1.0
// @grant       GM_registerMenuCommand
// @grant       GM_setValue
// @grant       GM_getValue
// ==/UserScript==

//当网页的背景颜色的rgb值分别大于Gr1,Gg1,Gb1时此脚本将把颜色改成目标颜色color
var Gr1 = 242; //RGB中的R值
var Gg1 = 242; //RGB中的G值
var Gb1 = 242; //RGB中的B值

//**********以下代码用户无需修改***********//
var Gr, Gg, Gb; //全局变量记录当前标签的rgb值,用于比较

//以下函数用于分解获取的"rgb(255, 255, 255)"格式的rgb
function FGrgb(Grgb) {
    Grgb = Grgb.replace(/[rgba\(\)]/g, '');
    var kaisi = Grgb.split(",");
    if (kaisi < 3) return;
    Gr = parseInt(kaisi[0]);
    Gg = parseInt(kaisi[1]);
    Gb = parseInt(kaisi[2]);
    //alert(Gr+"|"+Gb+"|"+Gg);
}


function changeAllElementsColor(color) {
    var Lcolor = ""; //用于记录网页中获取的背景颜色
    //获取并修改所有标签的背景颜色
    var alltags = document.getElementsByTagName("*");
    var len = alltags.length;
    for (var i = 0; i < len; i++) {

        if (alltags[i].style.backgroundColor == color) {
            continue;
        }

        Lcolor = document.defaultView.getComputedStyle(alltags[i], "").getPropertyValue("background-Color");
        FGrgb(Lcolor);
        if (Gr > Gr1 && Gg > Gg1 && Gb > Gb1) {
            alltags[i].style.backgroundColor = color;
        }
    }
}

function fixAutoPage() {
    var _bodyHeight = document.body.clientHeight;
    // 创建观察者对象
    var observer = new window.MutationObserver(function(mutations) {
        if (mutations[0].addedNodes) {
            if (document.body.clientHeight > _bodyHeight) {

                // console.log("--------addedNodes---------");

                setTimeout(function() {
                    changeAllElementsColor();
                }, 200);

                _bodyHeight = document.body.clientHeight;
            }
        }
    });
    observer.observe(document, {
        childList: true,
        subtree: true
    });
}

function changeColor(colorValue) {
    var color = "#F6F4EC"; //改变后的背景颜色
    var Lcolor = ""; //用于记录网页中获取的背景颜色
    //获取并修改body的背景颜色.

    if (colorValue == "yellow")
    {
        color = "#FAF9DE";
        //alert("Yellow");
    }
    else if (colorValue == "green")
    {
        color = "#C7EDCC";
        //alert("Green");
    }
    else if (colorValue == "grey")
    {
        color = "#DADADA";
        //alert("Grey");
    }

    try {
        Lcolor = document.defaultView.getComputedStyle(document.body, "").getPropertyValue("background-Color");
    } catch (e) {
        return;
    }

    FGrgb(Lcolor);

    if ((Gr > Gr1 && Gg > Gg1 && Gb > Gb1) || Lcolor == "transparent" || Gr == 0 && Gg == 0 && Gb == 0) //transparent表示透明
    {
        document.body.style.backgroundColor = color;
    }

    changeAllElementsColor(color);

    fixAutoPage();

}

function changeColorYellow() {
    changeColor("yellow");
    GM_setValue("colorValue", "yellow");
}

function changeColorGreen() {
    changeColor("green");
    GM_setValue("colorValue", "green");
}

function changeColorGrey() {
    changeColor("grey");
    GM_setValue("colorValue", "grey");
}

GM_registerMenuCommand("乡土黄", changeColorYellow, 'y');
GM_registerMenuCommand("豆沙绿", changeColorGreen, 'g');
GM_registerMenuCommand("浅色灰", changeColorGrey, 'r');


var colorValue = GM_getValue("colorValue", "none");

if (colorValue == "none")
{
    colorValue = "yellow";
    GM_setValue("colorValue", colorValue);

}

changeColor(colorValue);