Greasy Fork

缩小标题字体,缩小图片

摸鱼的艺术

目前为 2022-10-27 提交的版本。查看 最新版本

// ==UserScript==
// @name         缩小标题字体,缩小图片
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  摸鱼的艺术
// @author       You
// @match        http://*/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    const func=()=>{
        setTimeout(()=>{
            Array.from(document.getElementsByTagName('*')).forEach(ele=>{
                const fontSizeStr = getComputedStyle(ele).fontSize;
                const fontSizeRes = fontSizeStr.match(/(\d+)(\w+)/);
                if(fontSizeRes){
                    const num = fontSizeRes .at(1);
                    const unit = fontSizeRes .at(2);
                    const isTooBig = unit==='rem' ? Number(num) > 1:Number(num) > 20
                    ele.style.fontSize = '16px';
                }

                if(ele.tagName==='IMG'){
                    const imgWidthStr = getComputedStyle(ele).width;
                    const imgWidthRes = imgWidthStr.match(/(\d+)(\w+)/);
                    if(imgWidthRes){
                        const num = imgWidthRes .at(1);
                        const unit = imgWidthRes .at(2);
                        const isTooBig = unit==='rem' ? Number(num) > 10:Number(num) > 150
                        if(isTooBig){
                            ele.style.width = '150px';
                        }
                    }
                }

            })
            console.log('缩小字体完成');
        },1000)
    }

    func();

    window.addEventListener('hashchange',()=>{console.log('hash change'); func();})

    //修改native以拦截popstate事件
    var pushState = history.pushState;
    history.pushState = function() {
        var ret = pushState.apply(history, arguments);
        window.dispatchEvent(new Event("pushstate"));
        window.dispatchEvent(new Event("locationchangefathom"));
        return ret;
    }

    window.addEventListener("popstate", function() {
        window.dispatchEvent(new Event("locationchangefathom"))
    });
    window.addEventListener("locationchangefathom", trackPageview)
    function trackPageview() {
        func();
    }


})();