0

HTMLページにナイトモード効果をもたらすために使用するJavascriptコードがあります...

コードは次のようになります-

javascript: (function () {
    function RGBtoHSL(RGBColor) {
        with(Math) {
            var R, G, B;
            var cMax, cMin;
            var sum, diff;
            var Rdelta, Gdelta, Bdelta;
            var H, L, S;
            R = RGBColor[0];
            G = RGBColor[1];
            B = RGBColor[2];
            cMax = max(max(R, G), B);
            cMin = min(min(R, G), B);
            sum = cMax + cMin;
            diff = cMax - cMin;
            L = sum / 2;
            if (cMax == cMin) {
                S = 0;
                H = 0;
            } else {
                if (L <= (1 / 2)) S = diff / sum;
                else S = diff / (2 - sum);
                Rdelta = R / 6 / diff;
                Gdelta = G / 6 / diff;
                Bdelta = B / 6 / diff;
                if (R == cMax) H = Gdelta - Bdelta;
                else if (G == cMax) H = (1 / 3) + Bdelta - Rdelta;
                else H = (2 / 3) + Rdelta - Gdelta; if (H < 0) H += 1;
                if (H > 1) H -= 1;
            }
            return [H, S, L];
        }
    }

    function getRGBColor(node, prop) {
        var rgb = getComputedStyle(node, null).getPropertyValue(prop);
        var r, g, b;
        if (/rgb\((\d+),\s(\d+),\s(\d+)\)/.exec(rgb)) {
            r = parseInt(RegExp.$1, 10);
            g = parseInt(RegExp.$2, 10);
            b = parseInt(RegExp.$3, 10);
            return [r / 255, g / 255, b / 255];
        }
        return rgb;
    }

    function hslToCSS(hsl) {
        return "hsl(" + Math.round(hsl[0] * 360) + ", " + Math.round(hsl[1] * 100) + "%, " + Math.round(hsl[2] * 100) + "%)";
    }
    var props = ["color", "background-color", "border-left-color", "border-right-color", "border-top-color", "border-bottom-color"];
    var props2 = ["color", "backgroundColor", "borderLeftColor", "borderRightColor", "borderTopColor", "borderBottomColor"];
    if (typeof getRGBColor(document.documentElement, "background-color") == "string") document.documentElement.style.backgroundColor = "white";
    revl(document.documentElement);

    function revl(n) {
        var i, x, color, hsl;
        if (n.nodeType == Node.ELEMENT_NODE) {
            for (i = 0; x = n.childNodes[i]; ++i) revl(x);
            for (i = 0; x = props[i]; ++i) {
                color = getRGBColor(n, x);
                if (typeof (color) != "string") {
                    hsl = RGBtoHSL(color);
                    hsl[2] = 1 - hsl[2];
                    n.style[props2[i]] = hslToCSS(hsl);
                }
            }
        }
    }
})()

これを Google Chrome のブックマーク バーにブックマークレットとして保存しましたが、読み込むすべてのページにこれを自動的に適用したいと考えています。これを達成するにはどうすればよいですか?

4

1 に答える 1