Object要素を用いたナビゲーションの分離

大前提:ナビゲーションのあるべき姿

最終更新
更新はありません

1. ハイパーリンクの形をしていること

閲覧者は、ナビゲーションを観に来ているのではありません。コンテンツを観に来ているのです。従って、ユーザーが望んだ時にのみナビゲーションを提供したほうがスマートでしょう。

簡単です。ナビゲーションにリンクすればよいのです。閲覧者は、ナビゲーションを利用したい時に、そのナビゲーションへのアンカーをクリックするでしょう。

プロのウェブデザイナがやってきたことを、個人サイトで真似する必要は微塵もありません。つまりサイト内の全ての文書にナビゲーション要素を記述する必要などありません。

一部のニュースサイトなどでは、記事を読むのにロード時間の80%がナビゲーション用の画像などに消費されます。毎回です。馬鹿馬鹿しいと思いませんか?

2. 現在地がわかること

私は、「サイト構造上の位置が分かれば、文脈上関係のありそうな他の文書を見てもらえる可能性が高くなる」という仮説を立てています。Nielsen博士は「現在地が分からないサイトマップはあまり役に立たない」と言っています。

ウェブに限らず、ナビゲーションが:

  • 今何処にいるのか
  • どうやって目的地に行くのか

の2つの疑問に答えられないようでは話にならないという気もひしひしと。

3. メンテナンスフリーであること

個人サイトでは維持に手間がかからないことが大切です。1.と2.を満たしつつメンテナンスフリーを実現するにはサーバーサイドスクリプトを使うか、クライアントサイドスクリプトを使うかの2択になると思います。

サーバーサイドスクリプトを用いる場合

ここで注意すべきは、ナビゲーション要素を埋め込んだページを動的に生成してはならないということです。1.に述べたように、ナビゲーションはハイパーリンクで提供されるべきです。

従って、あるページからナビゲーション文書がリクエストされた場合にそのリファラを解析して、現在地を明示するという形になると思います。ただ私はサーバーサイドスクリプトを詳しく知りませんし、あまり好きではないのでこれ以上は書きません。

クライアントサイドスクリプトを用いる場合

2002年現在における事実上の標準、JavaScriptを利用することになります。JavaScriptの仕事は:

  • 現在地を明示させる

これだけです。しかし、ナビゲーション自体をそのページ内に表示させたい場合:

  • ナビゲーションへのリンクの「形」を変える

必要があります。

リンクといえば、クリックすると別の文書に「ジャンプ」する文字列、と考えられていることが多いですが、そうではありません。その「ジャンプ」とは、リンク(この場合ハイパーリンク)の表現形式の一つに過ぎません。

リンクについては別の文書に纏めてみましたのでご覧下さい。

「形」を変えるといっても具体的にどうすれば良いでしょうか。一般的に、

  • 新しくリンク先の文書を開く

というのがブラウザのデフォルトのリンクの表現形式です。これを次のように変えてしまいます。

  • リンク先の文書を、リンク元の文書内に表示する

これはクライアントサイドスクリプト(概ねJavaScriptのこと)でしか出来ません。

JavaScriptを用いる場合の欠点

JavaScriptを用いる場合の欠点は、閲覧者の環境によっては「機能」を提供できないということです。しかし、私に言わせれば全然問題ありません。なぜなら:

  • ナビゲーションにリンクしている

からです。JavaScriptがやっているのは、そのリンクの表現形式を若干便利なものに変えていることだけですから、JavaScriptが利用できない環境のユーザーには、そのブラウザのデフォルトのリンク表現によって、ナビゲーションが提供されることになります。通常、ナビゲーション文書を新しく開くという表現になるでしょう。

注意点:object要素の実際

最終更新
更新はありません

object要素を用いてHTML文書をインポートした場合、2002年現在、かなり絶望的な現実があります。ActiveXを無効に設定したIE/Winが、強制終了してしまうのです。

これを回避するため、(HTMLでは廃止方向に向っている)iframe要素で代替するのが現実的です。そのため以下では、iframe要素を使って例を示したりしますが、それらをobject要素に置き換えて考えても同じです。