NOBlog 〜バカの一念〜

基本的にはNOB(ノブ)の日記。
スキークロス国際レース出場を目標に日々努力中。

  November/2007  
S M T W T F S
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
blog内検索

[ASP.NET]ページにJavaScriptを埋め込む

2005-01-19
クライアントサイドスクリプトは、aspxファイルに直接書き込む事も可能ですが、ビューとコードの分離という意味では好ましいものではありません。
といことで、サーバーサイドでクライアントスクリプトを埋め込む方法を紹介します。
簡単なコードならば、[ASP.NET]Webコントロールにクライアントスクリプトを追加するにはで紹介した方法で良いですが、そうもいかない場合もあります。 そのようなときに、利用できるメソッドがあります。
RegisterStartupScriptと、RegisterClientScriptBlockです。
どちらもPageクラスのインスタンスメンバです。

では、この2つのメソッドの違いは何でしょうか?
以下のそれぞれの役割を説明します。

RegisterStartupScriptとは

シンタックス:RegisterStartupScript(Key, Script)
keyは、スクリプトブロックを一意に識別するための文字列を指定します。
Scriptは、クライアントに送られるスクリプトの内容を指定します。

このメソッドは、Pageオブジェクトのform要素の終了タグの直前にスクリプトタグを出力します。
例えば、画面表示時にあるテキストボックスにフォーカスをセットしたい場合等、ページ上の要素を呼び出すス
クリプトを追加する場合に利用します。
実際のコード例を以下に紹介します。この処理をページのLoadイベント処理に追加します。

  '本当はscriptタグです。Blogの仕様でそのまま書くと正しく送信されないので、criptをscriptと
  '読み替えて下さい。xmpとかでやってもダメでした。。
  Dim ScriptString As String = "<cript language=JavaScript> function SetFocusToTextBox1() {" & _
    "document.getElementById('" Me.TextBox1.ClientID & "').focus(); " & _
    "}" & _
    "</cript>"

  RegisterStartupScript("setfocus", ScriptString)


RegisterClientScriptBlockとは

シンタックス:RegisterClientScriptBlock(Key, Script)
keyは、スクリプトブロックを一意に識別するための文字列を指定します。
Scriptは、クライアントに送られるスクリプトの内容を指定します。

このメソッドは、Pageオブジェクトのform要素の開始タグの直後にスクリプトタグを出力します。
ページのレンダリングフェーズで呼び出されるスクリプト関数を追加する場合に利用します。
実際のコード例を以下に紹介します。この処理をページのLoadイベント処理に追加します。

  '本当はscriptタグです。Blogの仕様でそのまま書くと正しく送信されないので、criptをscriptと
  '読み替えて下さい。xmpとかでやってもダメでした。。
  Dim ScriptString As String = "<cript language=JavaScript> function MyFunction() {" & _
    "//必要なコード(良い例が、思い浮かびません(^^; " & _
    "}" & _
    "</cript>"

  RegisterStartupScript("client", ScriptString)


要求側のブラウザがスクリプトをサポートしていない事が想定される場合は、スクリプトをHTMLコメントタグで
囲んでおくと良いでしょう。



※注
当ブログのTipsは、@IT等の情報サイトの内容を参考にして構成された記事
もあります。Tipsの内容に著作権等権利を侵害する内容があった場合には、
告知して下さい。早急に訂正または削除にて対応したいと思います。

この記事へのトラックバックURL

この記事へのコメント
Copyright(C) PwBlog. All rights reserved.