SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Webページ上の状況依存ヘルプの自動作成

ASP.NETの分離コードを利用しスクリプトやマークアップを自動的に追加する

状況依存ヘルプを自動的に追加する

 特定の領域にヘルプウィンドウを関連付けるには、以下のクライアントサイドタスクを作成する必要があります。

  • ヘルプウィンドウを開閉するJavaScript
  • ヘルプウィンドウのCSSスタイル(絶対位置を決めるためのz-indexなど)
  • ヘルプウィンドウのマークアップ(<div>タグと<iframe>タグ)

 状況依存ヘルプを必要とする各ページにこれらの要素を手動で追加するのは手間がかかりますし、間違いのもとです。そのような方法によらず、ASP.NETページの分離コードクラスの1行のコードで画面上の領域とヘルプウィンドウを関連付けることができれば理想的です。そうすれば、メソッドを1回呼び出すだけで、必要なJavaScript、CSS、そしてヘルプウィンドウのマークアップが自動的に挿入されるからです。

 これを実装するために、状況依存ヘルプ関連メソッドを含むContextSensitiveHelpというクラスを作成しました。ContextSensitiveHelpSystem.Web.UI.Pageクラスの派生クラスです。ContextSensitiveHelpの状況依存ヘルプ関連メソッドをASP.NET内で利用するには、今回のサンプルアプリケーションのASP.NETページの分離コードクラスを、System.Web.UI.PageではなくContextSensitiveHelpから派生するように調整します。この手法とメリットについては、記事『Using a Custom Base Class for your ASP.NET Page's Code-Behind Classes』を参照してください。

 ContextSensitiveHelpクラスのAddContextSensitiveHelpというページレベルアクセスメソッドに各種のオーバロードが用意されています。このメソッドには少なくとも次の情報を渡す必要があります。

  • ヘルプ領域となるWebコントロール(LabelまたはImage Webコントロール)
  • windowID(ウィンドウ開閉用のヘルプウィンドウを識別する任意の文字列)
  • ヘルプウィンドウに表示するヘルプWebページのURL

 オプションで、ヘルプウィンドウの表示位置(ヘルプ領域の右または左側)、ウィンドウの幅と高さ、ヘルプ領域とヘルプウィンドウの間の左右および上限の余白、ヘルプウィンドウ開閉時の猶予時間(ミリ秒)に関する入力パラメータも指定できます。AddContextSensitiveHelpメソッドを呼び出すと、必要なJavaScriptとCSSが追加され、さらにヘルプウィンドウのマークアップが追加されます。

 例えば、WelcomeLabelというLabelコントロールにヘルプウィンドウを関連付けるには、Page_Loadイベントハンドラに次のコード行を追加します。

AddContextSensitiveHelp(WelcomeLabel, "GeneralHelp",
   "~/HelpFiles/GeneralHelp.aspx")

 ContextSensitiveHelpクラスを実際に使ってみたい方は、この記事のダウンロードサンプルをご利用ください。

ContextSensitiveHelpとASP.NET Version 1.x
 ContextSensitiveHelpクラスの開発にはVisual Studio 2005を使用しました。このクラスはASP.NET 2.0のWebアプリケーションで使うことを想定しています。クライアントサイドスクリプトの発行に関して.NET Framework 2.0で新たに登場したクラスやメソッドを使用しているので、そのままだとASP.NET 1.xアプリケーションでは正常に動作しません。しかし、2.0の新しいスクリプト機能も少し修正すれば1.xで実現できます。ASP.NET 1.xアプリケーションでクライアントサイドスクリプトを自動的に操作する方法については、『Working with Client-Side Script』を参照してください。

まとめと次のステップ

 今回は、以前の記事『Webページ上に状況依存ヘルプを作成する』で紹介した状況依存ヘルプシステムに大幅な改良を加えました。JavaScriptのsetTimeout関数を使用してヘルプウィンドウを表示するまでの猶予時間を追加する方法と、ヘルプ領域からマウスが出た後もヘルプウィンドウを表示したままにしておく方法を説明しました。また、ContextSensitiveHelpクラスについて紹介しました。このクラスには、ヘルプウィンドウを作成してヘルプ領域と関連付ける簡単なメソッドが用意されています。

 しかし、この状況依存ヘルプシステムには、まだ足りない点があります。例えば、ヘルプウィンドウの高さと幅を明示的に指定する必要があり、ウィンドウサイズが実際の内容に応じて変化しません。そのため、ヘルプウィンドウのサイズが400x350なのに内容がたった数ワードといったことが起こります。ウィンドウ内の空白部分を切り詰めてヘルプウィンドウのサイズを200x150というように自動的に調整する機能があれば理想的です。また、ヘルプ領域がブラウザの右端または下端近くにあるときに、ヘルプウィンドウがブラウザの右端または下端で切れてしまうようです。右端で切れそうなら左へ、下端で切れそうなら上へとウィンドウの位置を自動的にずらす機能があるとよいと思います。これらの問題は、多分今後の記事で扱うことになるでしょう。

 それでは、ハッピープログラミング!

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Scott Mitchell(Scott Mitchell)

http://www.4guysfromrolla.com/ScottMitchell.shtml

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/656 2006/10/30 00:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー