黑白网页恢复彩色

黑白网页恢复彩色,匹配所有网页,即装即用。

< Spätná väzba na 黑白网页恢复彩色

Otázka/komentár

§
Pridaný: 06.12.2022

mydigit.cn 网站不行 求支持!

§
Pridaný: 06.12.2022
Upravený: 06.12.2022

向head中插入style标签时发生冲突,插入样式函数按照下面替换掉就好了,麻烦自己替换一下,在最后几行,不再特意更新。

    function set(ele){
        try{
            ele=ele.replace(/saturate\(.*?\)/g,"saturate(1)");
        }catch{}
        if(ele.match(/grayscale(.*?)[^;]important/)) document.styleSheet.insertRule(ele.replace(/grayscale\(.*?\)/g,"grayscale(0)"), document.styleSheet.cssRules.length);
        else{
            var text=ele.replace(/grayscale\(.*?\)/g,"grayscale(0)").slice(0,-1);
            var csstext=""
            for(var st of text.split(";")){
                if(st.match(/grayscale\(0\)/)) csstext+=st+"!important;"
                else if(st.match(/^\s+$/)){}
                else csstext+=st+";";
            }
            document.styleSheet.insertRule(csstext+"}", document.styleSheet.cssRules.length);
        }
    }
§
Pridaný: 06.12.2022

向head中插入style标签时发生冲突,插入样式函数按照下面替换掉就好了,麻烦自己替换一下,在最后几行,不再特意更新。

作者搞错了啦,看了下代码,这个函数没问题,问题是这个页面的style写在了body标签内部,权重比指定body设置grayscale(0)!imporatant还要高,我试了下直接获取所有style元素再找到grayscale之后替换掉有用,加在主函数里面就OK。

        var sty=document.getElementsByTagName("style");
        for(var i=0;i<Object.keys(sty).length;i++){
            try{
                sty[i].innerHTML=sty[i].innerHTML.replace(/saturate\(.*?\)/g,"saturate(1)");
            }catch{}
            if(sty[i].innerHTML.match(/filter.*grayscale/)) sty[i].innerHTML = sty[i].innerHTML.replace(/grayscale(.*?)/g, "grayscale(0)");
        }
§
Pridaný: 06.12.2022

向head中插入style标签时发生冲突,插入样式函数按照下面替换掉就好了,麻烦自己替换一下,在最后几行,不再特意更新。

作者搞错了啦,看了下代码,这个函数没问题,问题是这个页面的style写在了body标签内部,权重比指定body设置grayscale(0)!imporatant还要高,我试了下直接获取所有style元素再找到grayscale之后替换掉有用,加在主函数里面就OK。

正则表达式写错了,正确代码如下,最好加在最后

        var sty=document.getElementsByTagName("style");
        for(var i=0;i<Object.keys(sty).length;i++){
            try{
                sty[i].innerHTML=sty[i].innerHTML.replace(/saturate\(.*?\)/g,"saturate(1)");
            }catch{}
            if(sty[i].innerHTML.match(/filter.*grayscale/)) sty[i].innerHTML = sty[i].innerHTML.replace(/grayscale\(.*?\)/g, "grayscale(0)");
        }
§
Pridaný: 06.12.2022

向head中插入style标签时发生冲突,插入样式函数按照下面替换掉就好了,麻烦自己替换一下,在最后几行,不再特意更新。

作者搞错了啦,看了下代码,这个函数没问题,问题是这个页面的style写在了body标签内部,权重比指定body设置grayscale(0)!imporatant还要高,我试了下直接获取所有style元素再找到grayscale之后替换掉有用,加在主函数里面就OK。

正则表达式写错了,正确代码如下,最好加在最后

草,刚刚刷了下知乎,发现不小心把别的也给换了,知乎有bug,还是这样最稳

        var sty=document.getElementsByTagName("style");
        for(var i=0;i<Object.keys(sty).length;i++){
            if(sty[i].innerHTML.match(/filter.*grayscale/))sty[i].innerHTML = sty[i].innerHTML.replace(/grayscale\(.*?\)/g, "grayscale(0)");
        }
§
Pridaný: 06.12.2022

向head中插入style标签时发生冲突,插入样式函数按照下面替换掉就好了,麻烦自己替换一下,在最后几行,不再特意更新。

作者搞错了啦,看了下代码,这个函数没问题,问题是这个页面的style写在了body标签内部,权重比指定body设置grayscale(0)!imporatant还要高,我试了下直接获取所有style元素再找到grayscale之后替换掉有用,加在主函数里面就OK。

正则表达式写错了,正确代码如下,最好加在最后

草,刚刚刷了下知乎,发现不小心把别的也给换了,知乎有bug,还是这样最稳

        var sty=document.getElementsByTagName("style");
        for(var i=0;i<Object.keys(sty).length;i++){
            if(sty[i].innerHTML.match(/filter.*grayscale/))sty[i].innerHTML = sty[i].innerHTML.replace(/grayscale\(.*?\)/g, "grayscale(0)");
        }

感谢!

Pridať odpoveď

Aby ste mohli pridať odpoveď, prihláste sa.