2024年4月12日

Firefox標準のサイズ変更で、フォントサイズのみを変更という項目があるけど、これをチェックしてしまうと全てのサイトでフォントサイズのみ変更になってしまう。

なので作った。



処理としては、全てのノードを取得してテキストノードだった場合、適当なタグ(とりあえずフォントタグを使用)で囲んでスタイルをxxx%と指定するというもの。

凄く泥臭い処理な気がしてあまり好きじゃないので、本当はbodyタグ直下にタグを置いて全体を囲みたいところなんだが、ページ原文に15pxとか指定されてる場合に対応できないのでこういう処理になってる。

もっといい方法無いものか・・・知っている人が来たら是非。



以下はコード内容。

// ==UserScript== // @name Font_Size_Up // @namespace Font_Size_Up // @include https://harezora.moonrabi.jp/* // @include https://maplestory.nexon.co.jp/* // @version 1 // @grant none // ==/UserScript== var font_size_per = "100%"; var selector_func; function ForEachFunc(element) { var j; for (j = 0; j < element.childNodes.length; j++) { if (element.childNodes[j].childNodes.length != 0 || element.childNodes[j].nodeType != Node.TEXT_NODE) { continue; } if (element.childNodes[j].nodeValue.match(/^\s*$/)) { continue; } if (element.tagName.match(/^font$/mi)) { if (element.className == "size_up") { continue; } } var font_elm = document.createElement("font"); font_elm.className = "size_up"; font_elm.style.fontSize = font_size_per; font_elm.appendChild(document.createTextNode(element.childNodes[j].nodeValue)); element.replaceChild(font_elm, element.childNodes[j]); } } function SelectorFuncCore(target_elm) { var elements = target_elm.querySelectorAll('*:not(script):not(style)'); // scriptやstyleタグ内は対象外 elements.forEach(function(element){ForEachFunc(element);}); ForEachFunc(target_elm); } function SelectorFunc() { SelectorFuncCore(document.body); } var old_font_num = 10000; function IntervalFunc() { var font_num = document.getElementsByTagName("font").length; if ( old_font_num != font_num ) { selector_func(); old_font_num = document.getElementsByTagName("font").length; } } if (location.href.match(/^https\:\/\/harezora\.moonrabi\.jp\/.*/m)) { font_size_per = "110%"; SelectorFunc(); } if (location.href.match(/^https\:\/\/maplestory\.nexon\.co\.jp\/community.*/m)) { font_size_per = "160%"; selector_func = SelectorFunc; setInterval(IntervalFunc, 1000); }



一部、メイポ公式のようにonClick処理で他記事を読み込むようにしている場所があり、そういう場所ではsetIntervalを使用。
(stanchのページでも記事のインデックスページがそうなってる)



document.addEventListener("click", function(evt){
	if (evt.target.tagName.match(/^font$/i))
	{
		setTimeout(SelectorFunc, 100);
	}
});
みたいにやろうとしたけどバックグラウンドで読み込みしているらしく駄目な場合があったので、めんどくさくなったのでsetIntervalで。



つーか文句言いたい!

晴空はまだしも、メイポのおしゃべり広場のフォント小さすぎでしょ!?

確かリニューアル直後に誰かにも言われてたよ。

Nexonの中の人(多分偉い人)の目玉どうなってんの?

ビフォーアフターだよ。
左の小さすぎるよねぇ・・・

ギルドメンバー募集の記事を勝手に使わせてもらったので、よければギルド入ってあげてね。

今のメイポは昔と違ってプレイヤーの質が凄く良くなってるからきっと楽しいはず!
(マビノギより質が良くなってるんじゃないかと思ったり)

このギルドもまったりとしてそうで良さそうだよ。

コメント一覧

下に行くほど新しいコメントです

この記事にコメントを投稿した人はまだいません

コメントをどうぞ

名前: