// ==UserScript== // @name 稍微放大电脑网站的字体 // @author ChatGPT定制 // @version 5 // @description 稍微放大电脑网站的字体,脚本菜单可以控制网站启用与禁用,并设置单独网站的字体和行间距倍数。 // @match *://*/* // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @run-at document-end // @namespace https://greasyfork.org/users/452911 // @downloadURL none // ==/UserScript== (function () { "use strict"; var storageKey = window.location.hostname; var isEnabled = GM_getValue(storageKey + "_enabled", true); var fontMultiplier = GM_getValue( storageKey + "_font_multiplier", 1.04 ); var lineHeightMultiplier = GM_getValue( storageKey + "_line_height_multiplier", 1.08 ); function enlargeFontSize() { const rootFontSize = parseFloat( getComputedStyle(document.documentElement).fontSize ); const newRootFontSize = rootFontSize * fontMultiplier; document.documentElement.style.fontSize = `${newRootFontSize}px`; const rootLineHeight = parseFloat( getComputedStyle(document.documentElement).lineHeight ); const newRootLineHeight = rootLineHeight * lineHeightMultiplier; document.documentElement.style.lineHeight = `${newRootLineHeight}px`; const elementsToScale = document.querySelectorAll("*"); elementsToScale.forEach((element) => { const fontSize = parseFloat(getComputedStyle(element).fontSize); element.style.fontSize = `${(fontSize / rootFontSize) * newRootFontSize}px`; const lineHeight = parseFloat(getComputedStyle(element).lineHeight); element.style.lineHeight = `${ (lineHeight / rootLineHeight) * newRootLineHeight }px`; }); } function checkFontSize() { const width = window.innerWidth; if (width > 700) { enlargeFontSize(); } } if (isEnabled) { window.addEventListener("resize", checkFontSize); checkFontSize(); } GM_registerMenuCommand(isEnabled ? "禁用字体放大" : "启用字体放大", function () { isEnabled = !isEnabled; GM_setValue(storageKey + "_enabled", isEnabled); if (isEnabled) { window.addEventListener("resize", checkFontSize); checkFontSize(); } else { document.documentElement.style.fontSize = ""; document.documentElement.style.lineHeight = ""; const elementsToReset = document.querySelectorAll("*"); elementsToReset.forEach((element) => { element.style.fontSize = ""; element.style.lineHeight = ""; }); window.removeEventListener("resize", checkFontSize); } }); GM_registerMenuCommand("调整字体大小", function () { var newFontMultiplier = prompt( "请输入字体大小倍数", fontMultiplier.toString() ); if (newFontMultiplier !== null) { fontMultiplier = parseFloat(newFontMultiplier); GM_setValue(storageKey + "_font_multiplier", fontMultiplier); checkFontSize(); } }); GM_registerMenuCommand("调整行间距", function () { var newLineHeightMultiplier = prompt( "请输入行间距倍数", lineHeightMultiplier.toString() ); if (newLineHeightMultiplier !== null) { lineHeightMultiplier = parseFloat(newLineHeightMultiplier); GM_setValue( storageKey + "_line_height_multiplier", lineHeightMultiplier ); checkFontSize(); } }); })();