Wrong HTML - スクリプトとアクセシビリティ

NoScriptを使用する

スクリプト言語は多数ありますが、今回は広く利用されている「JavaScript」を例として書いていこうと思います。

まず、最初に基本だとは思いますが「NoScript要素」についてです。この要素はスクリプトをサポートしない、もしくは無効にしてあるユーザーエージェント向けの要素です。もし、スクリプトを使用しているなら必須と言えますね。

しかしこれも稀に意味のない使われ方をされていることがあります。NoFrames要素もそうですが、サポートしているユーザーエージェントの使用を促したりするためにあるものではありません。スクリプトの代替として同等の機能のアクセシブルなオブジェクト、もしくはせめてその機能がわかるような解説、アクセシブルなサイトへのリンクなどを表示するためのものです。間違ってもTopページを入り口のみのページにして

<script>
〜なにかしらのスクリプト〜
</script>
<noscript>
<p>このページはJavaScriptがオンでないと見れません。</p>
</noscript>

と書いてはいけません。よほど見たいと思わせるサイトでない限り、ブラウザの「戻る」ボタンを押されてしまうでしょう。

リンク

リンクテキストにカーソルを合わせた時、ステータスバーに「javascript:void(0)」などと表示されたことはありませんか?クリックしてみるとサイズ指定されていたりする別窓が開くことがありますね。このようになんの前触れもなく別窓を開くことは避けるようにとWAI(Web Accessibility Initiative)のウェブコンテンツ・アクセシビリティガイドラインにはあり、また、href属性の値として「javascript:〜」を使用することもやめるようにとも書いてあります。

このように別窓を開いたり、オブジェクトを使用したりすることは作成者の意志ではなく、閲覧者の意志に任せるべきであり、勝手にリソースを消費させるようなことは避けましょう。最近ではポップアップウィンドウを開かないようにできるブラウザやソフトウェアが増えたことを考えれば、いかにポップアップが邪魔かということがわかると思います。

別窓が開くなら開くと書くだけで避けれる問題なので、簡単なことですよね?

ステータスバー

リンクテキストにカーソルを合わせた時に多くのブラウザはステータスバーにリンク先のURLを表示させます。また、ブラウザによってはImg要素のAlt属性の値や、Abbr要素、Acronym要素のTitle属性の値を表示させるでしょう。ステータスバーはこのような情報を表示する領域ですので、文字列を表示させたりすることは避けましょう。

このようにユーザーエージェント自体(HTMLの表示領域外)に手を加えることはHTMLの仕事ではないのではないでしょうか。なにか主張したいことがあれば、HTMLの表示領域内に表示したほうがすっきりするというものです。ステータスバーが非表示になっていたら意味がありませんしね。

アラートについて

Topページで突然ダイアログが表示され挨拶文が表示されるようなサイトもありますが、Alertは警告用のダイアログということを忘れてはいないでしょうか。日頃安定感のないOSを使用していたりするわたしたちは、この警告ダイアログには敏感になっていますし、なるべく見たくないものでしょう。

挨拶の文を表示したいのならTopページにでも書けば十分です。

また、Promptを使用して意味もなく名前などを入力させるということも避けるべきです。あまり意味のない動作をさせられることほど嫌なことはないと思います。これらはアクセシビリティというよりユーザビリティという面で問題があります。

イベントハンドラについて

もし突然マウスが壊れて、OS自体の操作ができなくなったら、どう思いますか?きっと困ったり怒ったりすることでしょう。そのようなことを防ぐためにもキーボードで操作できるということは大事なことだと思います。

最近ではマウスでしか操作しない、という人も多いとは思いますが様々な理由からひとつのデバイスしか操作できないという状況は発生します。

HTMLではそんなことは関係ないのでしょうか?確かにWWWブラウザはマウスとキーボードの両方で操作できます。しかし、操作できるように設計されているのは、HTMLの表示領域外と、WWWブラウザに表示する物の作成者が独自のイベントを発生させない時だけです。

もしHTML内でOnClick等のイベントハンドラからスクリプトを動作させているなら、そこから先は作成者の責任となります。訪問してくださる方たちをがっかりさせないためにも、OnClickとOnKeyPress、OnMouseDownとOnKeyDown、OnMouseUpとOnKeyUpのように組み合わせて指定しましょう。

最後に

オブジェクトやスクリプトの使用はアクセシビリティを低下させるということを言ってはいますが、使用すること自体を非難しているわけではありませんし、せっかく存在する技術ですので使用することは、どちらかと言えば良いことだと考えています。

しかし、技術にしても何にしても使い方や限度というものがあります。特にステータスバーの件のように、ユーザーエージェントのアクセシビリティやユーザビリティを低下させるような使用法はやめるべきです。

これらが適切に使用されたなら、スクリプトやポップアップウィンドウもこれほど嫌われることはなかったのでしょうね。このような技術はそこで本当に必要なのか、使用しなくても表現できないか、ということを考えて取り入れたほうがいいのではないかとわたしは考えます。