いさぢちんメモ

d.hatena.ne.jp/mosshm/より移行。

ズーム禁止滅べ

モバイルブラウザでは、ズームは重要なアクセシビリティ機能です。ズームを無効化するのはゲームなどの特別な場合のみ、本当に必要な場合のみにとどめるべきです。

はい、これ。
はてなスペース サービス終了のお知らせ

Opera Mobileで見てみましょう。ズームを無効にすべきではない事が分かると思います。

たびたび「スマフォ表示滅べ」と言い続けてきましたが、それはOpera Mobileのような優れたモバイル向けブラウザを用いてケータイサイトに毛が生えたようなスマフォ向けページを見る事が苦痛だった、というのもありますし、もともとスマートフォンが国内で普及し始めたW-ZERO3当時、Opera Mobileを使えばPC向けのサイトをそのまま何不自由なく閲覧する事が出来たのに、今になってなに退化してんだ、という思いもありました。が、今になって考えると、3カラムで両サイドへ無駄にアフィリエイト画像がベタベタ貼られたような酷いレイアウトのブログをモバイルブラウザで見るのも無理が出てきた*1っつうか、あの頃と比べて重いページが増えてきたよねー、もうスマフォ表示とやらも軽いレイアウトとして認める必要があるんじゃないのか、とか思うようになったりならなかったりするわけで。だかしかし、これだけは許せない。こんなページを作るアホは死ねばいいのに。そう思い続けているのが、このユーザに対してズームを制限するようなページ。モバイルデバイスの表示領域きっかりに表示させたいなどの場合に使用されるviewportを用いているのですが、いつの頃からか、これを使ってズーム自体を禁止するようなページが増えてきました。画面の小さいモバイル機器では、ズーム機能を使いページの一部を拡大しないと文字が小さすぎて見にくかったりしますし、この機能を封じられると文字が読めない、なんて事になってしまうのです。繰り返しますが、モバイルブラウザにおいてズームは重要なアクセシビリティ機能ですので、特別な場合を除き無効化すべきではありません。もういいやめんどくせえ。ズームできないページが多いならユーザ側で対処すればいいんだろ、くそったれめ!

var element = document.createElement('meta');
element.name = "viewport";
element.content = "user-scalable=yes; minimum-scale=0; maximum-scale=10;";

var addHead = document.getElementsByTagName("head").item(0);
addHead.appendChild(element);

こんな感じのuserjsを放り込んでおけばuser-scalable=noでズームを禁止している物に関しては問題なくズームできるようになってるはず。

普段はuserjsを仕込まずに使っていて、ズーム出来ないページに遭遇してぶち切れたときだけどうにかするなら、ブックマークレットでもいいかもしれません。

javascript:var element = document.createElement('meta');element.name = "viewport";element.content = "minimum-scale=0.25; maximum-scale=1.6; user-scalable=yes";var addHead = document.getElementsByTagName("head").item(0);addHead.appendChild(element);undefined;

倍率の最大最小値は適宜修正。

*1:そんなときはusercssを書こう。