![]() ![]() ![]() ![]() Webページ上に状況依存ヘルプを作成するこの記事のURLhttp://japan.internet.com/developer/20061205/26.html
著者:Scott Mitchell
海外internet.com発の記事
はじめにWebアプリケーションのレポート画面を作成するときに、そのレポート中に一部のユーザーには意味が分かりにくい部分があることは珍しくありません。レポートで多用される頭文字や略語は、見慣れたユーザーには第二の言語のようなものかもしれませんが、たまにしかオンラインレポートに目を通さない上司や会社幹部には意味不明であることも多いのです。また、レポートでテキストを色分けしたり、イメージファイルやアイコンを使って情報を表している場合、そのような視覚的なヒントがレポートの読者にとって常に直感的に理解できるとは限りません。 このような場合は、状況依存ヘルプ(context-sensitive help)を用意すると便利です。状況依存ヘルプがあると、ユーザーはアプリケーション内で出会った特定の要素や状態について、簡潔な説明を参照できます。最もシンプルな例がツールヒントです。ツールヒントは、特定のユーザーインターフェイス要素をマウスで指したときに、その要素の用途や機能に関する説明を表示する機能です。今回は、同様の機能をWebアプリケーションのレポートに組み込んでみます。これにより、状況依存ヘルプを使って、紛らわしい略語の完全なスペルを表示することや、レポートで使っている色分けや各種イメージの意味を説明することができます。 HTML標準では、事実上すべてのHTML要素に 残念ながら、ツールヒントで表示できるのは、比較的短いテキストに限られます。では、サイズや色が異なるテキストが混在し、イメージが含まれるような高度なヘルプを表示するには、どうすればよいでしょうか。 私はツールヒントの限界を乗り越えるため、簡単なJavaScriptコードを使う状況依存ヘルプシステムを利用しています。これは、画面上の事前に定義した部分にマウスが移動すると、ヘルプのウィンドウがポップアップするというものです。このヘルプ ウィンドウには、複雑な書式を設定したテキストやイメージを含むHTMLコンテンツを表示することができます(ライブデモを参照)。以降では、このような複雑な状況依存ヘルプをWebページに追加する方法を説明します。 マウスが特定のHTML要素の上に移動したときにアクションを実行する HTML標準では、ユーザーのアクションに応じてなんらかのアクションを実行するためにクライアントサイドイベントが定義されています。 例えば、状況依存ヘルプをHTMLボタンに適用するには、次のようなマークアップを使います。
<input type="button" value="Submit"
onmouseover="showHelpWindow"
onmouseout="hideHelpWindow" />
ヘルプウィンドウをポップアップ表示する 事前に定義した領域にマウスが移動したときにヘルプウィンドウを表示する位置を決める必要があります。候補として考えられるのは、画面上の固定した位置(ページの中央上部のポップアップウィンドウなど)か、マウスポインタに近い位置です。今回は、後者の方法で表示することにします。ポップアップウィンドウを表示するには、まずウィンドウをページに追加する必要があります。私の場合は、 以下に、このような <style> .HelpWindow { z-index: 999; position: absolute; top: -999px; left: -999px; display: none; visibility: hidden; width: 300px; height: 250px; ... feel free to add additional style settings here ... } </style> <div id="MyHelpWindow" class="HelpWindow"> <iframe frameBorder="0" height="100%" src="HelpPage.htm"></iframe> </div> 状況依存ヘルプウィンドウの表示/非表示を切り替えるには、以下の4つの
この関数は、渡された
windowID値に一致するid属性を持つヘルプウィンドウを表示します。ヘルプウィンドウを表示する位置は、2番目の入力パラメータ(contextSensitiveHTMLElement)で指定されたHTML要素の横です。goRightがtrueの場合はウィンドウを要素の右横に表示し、trueではない場合は左横に表示します。contextSensitiveHTMLElement要素とヘルプウィンドウの間隔は、入力パラメータhorizPaddingとvertPaddingで指定できます。指定されたヘルプウィンドウを非表示にします。
この関数は、指定されたHTML要素
elemの左端のピクセル位置を確認します。この関数は、指定されたHTML要素
elemの上端のピクセル位置を確認します。 JavaScript関数を確認する 詳細情報を含む これらの関数の完全なコードは、ライブデモに含まれています。この記事のダウンロードサンプルにも収録されています。 function showHelpFloatWindow(windowID, obj, function hideHelpFloatWindow(windowID) { var w = document.getElementById(windowID); if (w != null) { w.style.display = ’none’; w.style.visibility = ’hidden’; w.top = -999; w.left = -999; } } 全体を組み立てる 以上のJavaScriptスクリプトをWebページに追加し(単体のJavaScriptファイルに格納すればさらに良い)、ヘルプウィンドウをポップアップするための
<input type="button" value="Submit"
onmouseover="showHelpFloatWindow(’MyHelpWindow’, this, 10, 20, false);"
onmouseout="hideHelpFloatWindow(’MyHelpWindow’);" />
どちらの関数も、最初の入力パラメータとして値「MyHelpWindow」を渡します。 複数のブラウザで使えるツールヒントのJavaScriptライブラリ
読者から、複数のブラウザで使えるツールヒントの、フリーなJavaScriptライブラリの共有の申し出がありました。詳しくは、『A Cross Browser Tooltip JavaScript Library』を参照してください。
次のステップ この段階の状況依存ヘルプシステムは、かなり単純で、欠点があります。第一の欠点は、すべてのヘルプが静的なマークアップで処理されることです。新しいヘルプウィンドウを追加するためには、適切な このような問題点については、記事『Programmatically Creating Context-Sensitive Help on a Web Page』で解説します。 状況依存ヘルプシステムを強化する
この記事の目的は、状況依存ヘルプシステムの基礎部分を作ることですので、このヘルプシステムには欠点があります。すぐに気付くのは、マウスが状況依存の領域に達した瞬間にヘルプウィンドウが表示され、マウスが領域を去った瞬間にウィンドウが消えることです。この動作には、操作性に関する2つの問題があります。まず、画面の上を移動しているマウスがたまたまヘルプ領域を通過しただけでもヘルプウィンドウが表示されるので、めざわりなことがあります。また、ヘルプウィンドウ内にリンクがあったり、長すぎてスクロールしないと読めないテキストがある場合、マウスをヘルプ領域からヘルプウィンドウに移動しようとすると、マウスがヘルプ領域を出てしまうため、ヘルプウィンドウが消えます。
このような操作性の問題点に加えて、この状況依存ヘルプシステムは、ページの開発者にとってもユーザーフレンドリではありません。すべてのスクリプトおよび <div>要素と<iframe>要素を手動でWebページに追加して、ヘルプウィンドウと、ヘルプ領域のonmouseoverイベントハンドラとonmouseoutイベントハンドラを定義する必要があるからです。開発の手間という面から考えれば、必要なすべてのスクリプトとマークアップを、ASP.NET分離コードクラスの1行のコードで追加できるのが理想的です。記事『Programmatically Creating Context-Sensitive Help on a Web Page』では、これらの欠点を解消する方法を説明します。 結論 HTMLの それでは、ハッピープログラミング! 著者紹介Scott Mitchell(Scott Mitchell)
|