最近、残念な思いをすることが増えています。
何が残念なのか? というのは、まあ読んでいただければ解ると思いますが……。
たとえば、こんなのを見たことがあるのではないかと思います。
これにはいつも残念な思いをします。項目を選択すると何かが起こりそうな雰囲気なのですが、何もおきません。JavaScript が有効な環境では SELECT を操作した瞬間にジャンプするのでしょうが、JavaScript がオフになっていると何をどう動かしても微動だにしません。
特に困るのは、SELECT要素以外にリンクもなにもないページ。何をどう操作しても先に進めないので、ソースを解析して URL をコピー & ペーストするという壮絶な戦いになります。もっとも、たいていはそんなことをする前にあっさりと諦めますが……。
似たような物でも、JavaScript オフの環境で動作するものがあります。たとえば以下のような感じのものです。
これは ASP.NET で実現されていて、ボタンを押すとサーバに URI が送られます。サーバ側では Status: 302 と Location: 送られてきたURI を出力しています。これならば JavaScript がオフでも、ボタンを押せばちゃんと移動できるはずです。
ただしこの場合はリダイレクトしていますので、移動の速度は若干遅くなります。場合によっては「302」の画面が表示されてさらにリンクをたどらなければならないかもしれません。その意味では JavaScript の移動の方が優れています。
ですから、
JavaScriptがオンならば JavaScript の location.href で移動
JavaScriptがオフならば CGI で移動
という動作が望ましいでしょう。その動作を実現するのは簡単です。
JavaScript の location.href で移動するフォームを JavaScript の document.write で書き出す。JavaScript がオフなら書き出されない。
CGI で移動するフォームを NOSCRIPT 要素の中に入れる。JavaScript がオンなら表示されない。
という具合にすれば良いのです。まあ、NN2 で両方が表示されるのは愛嬌ということで……。
こんな具合で、スクリプトオフ環境でも使えるナビゲーションを提供するのは決して難しいことではありません。どうして世の中には残念な思いをするサイトがこうも多いのでしょうか。おそらく JavaScript が使えない環境が存在するなどとは夢にも思っていない人が作っているからだと思うのですが……。
CGI が使えない場合は……困りましたね。そんなときは、単なる文字のアンカーを列挙しただけのナビゲーションバーの使用を検討してみてはいかがでしょうか? ナビゲーションがずっと解りやすく、ずっと使いやすくなると思います。