ウェブページは、全ての閲覧者に同じ見栄えで見てもらうことが不可能です。しかし見栄えは異なっても中身は伝わるように、見栄えに関する情報を内容から切り離すことができます。この見栄えに関する情報がCSSであり、これを無効にすることで、確実にウェブページを閲覧することができるのです。
CSSに対応していないブラウザならば、最初からCSSは無効なので問題ありませんが、CSSに対応しているブラウザには、この「CSSを無効化する手段」は必須です。なぜなら制作者のミスやそのブラウザのバグによって:
というお粗末な事態になりかねないからです。
WindowsのInternet Explorer5/6は、文字が消える、アンカーをクリックしても何も起らない、などCSSに関して大きなバグを幾つも抱えています。ここで、そのようなバグが露出したウェブページに遭遇した場合、制作者とユーザーのどちらに責任があるでしょうか。
一般的には:
と、文句を言うのはユーザーです。しかしこれは本当は異常なことです。悪いのは、バグを抱えたブラウザであって、仕様どおりにウェブページを公開している制作者に責任はありません。
ちょっと考えてみましょう。
ここで、その「一部のブラウザ」にもJPEG画像を表示させるためのちょっとした小技があったとします。
常識的に、ユーザーはブラウザ製作会社に文句を言います。または使用するブラウザを変更します。問題は、CSSの場合には、その「ブラウザ」が大変にメジャーであるということです。しかしメジャーであろうがマイナーであろうが、責任の所在は変わりません。一般の多くの製作者は泣き寝入りして「小技」を使わざるを得ないのですが(私も数多く使っています)、奇妙なのは、そのような「小技」を使わないという選択をした製作者を誹謗(信者うんぬん)する似非紳士の存在です。
一部の某ブラウザのバグに付き合った解を求める行為は、Accessibilityの追求とは似て非なるものです。WebのAccessibilityは、あくまで「人」をターゲットにしています。マウスを操作できない人、目が見えない人、音が聞こえない人、等々です。決して、「アンカーをクリックしても何も起らないブラウザ」「先頭に処理命令があるとソースを表示してしまうブラウザ」「transparentキーワードを使うと背景が真っ黒になってしまうブラウザ」を相手にしているのではありません。人です。人。
User Agentの機能不全を視野に入れたAccessibilityなど、あり得ません。歩み寄るべきはUser Agentの側であることは明らかです。身体障害をもったユーザーは排除されるべきではありませんが、機能不全を持ったUser Agentは積極的に排除されて然るべきです。
さて、このようなUser Agentのバグに付き合う行為は何と呼ばれるべきでしょうか。泣き寝入りと呼ばれるべきです。配慮と呼ばれるべきではありません。例えばその辺の素人が一晩で作ったブラウザにバグが多数あったとして、一々それに付き合ったウェブページを作る人はいません。ところがそのブラウザがメジャーになってしまったとしたら、一般的に「泣き寝入り」するしかないんです。飽くまで「泣き寝入り」です。そんなものがモラルであるわけがないんです。
あるCSS採用ウェブサイトは、Ineternet Explorerにて表示が崩れます。そのサイトの一閲覧者は、ちょっとしたCSSの記述の変更でそのバグをgo awayするhackを知っており、サイトの運営者に知らせたとします。
この後の「運営者」と「閲覧者」両者の取る態度は、前述の:
によって大きく変わってきます。
「運営者」はこれを「泣き寝入り」と呼んでおり、「閲覧者」はこれを「配慮」と呼んでいたのだとしたら ちょっとした悲劇が起りますが、具体的なflameの内容は想像にお任せします。
さて、本来なら表示がおかしかった場合には:
このようなユーザー設定項目があり、それを選択することでCSSが無効になるのが望ましいのです。あるいは、ウェブページのCSSを完全に上書きするようなユーザースタイルシートを利用することで、同様の理想が実現します。
CSS対応を謳うブラウザベンダの取るべき処置としては:
このどちらかしかあり得ません。これこそがモラルです。いまいち設定が分かりにくく、オタクっぽい機能
でしかないInternet Explorerの「ユーザー補助」は、バグの量と比較してちょっと不十分であると言って良いでしょう。
と、以上ような暑苦しい「思惑」があり、ウェブページのCSSを無効にする方法はこのサイトのトップレベルコンテンツになっているわけです。XSLTする際に公開版からは消されていたようですが、以上の文章はそのソースファイルにコメントアウトしてあったものです。
ちなみに、ON/OFFの切替にするならこのような感じでしょうか。
function usr_toggleCSS(){
var ss=document.styleSheets;
for(var i=0,s,l=ss.length; i<l; i++){
s=ss.item(i);
if(s.x===undefined){
s.x=s.disabled;
s.disabled=true;
}else{
s.disabled=s.x;
s.x=undefined;
}
}
}usr_toggleCSS();
しばらく試してから.urlファイルを公開する予定です。