.NET TIPS [Silverlight 2]Silverlightプラグイン・ロード時にJavaScriptコードを実行するには?[C#、VB]デジタルアドバンテージ 一色 政彦2009/07/09 |
|
|
SilverlightアプリケーションをHTMLページの一部(=コントロール)として埋め込むケースでは、Silverlightコントロール(=Silverlightプラグイン)がロードされた直後に、HTMLページの一部を更新するなどの処理を行いたいことがある。そのような場合には、SilverlightコントロールのLoadedイベントを、HTMLコード(のJavaScriptコード)側でハンドルすればよい。
次のSilverlightアプリケーションでは、実際にLoadedイベントをハンドルして、Silverlightコントロール・ロード直後に、HTMLコンテンツとして記述された「Silverlightコントロールがロードされていません」というメッセージを、「Silverlightコントロールがロードされました」に書き換える。
|
|
Silverlightコントロールのロード直後にメッセージを書き換えるサンプル |
■HTMLコードでLoadedイベントをハンドルする場合
Silverlightコントロールがロードされたのを、HTMLコード(のJavaScriptコード)側でハンドルするには、まずはHTMLコード内に埋め込んでいるSilverlightコントロールの<object>タグ内に「<param name="onload" value="onSilverlightLoaded" />」(下記のコードの太字部分)を追記する。
|
|
Silverlightプラグインのロード・イベントとJavaScript関数を関連付けるHTMLコード |
■ASP.NETコードでLoadedイベントをハンドルする場合
ASP.NET(.aspxファイル)では、<object>タグのほかに、Silverlightコントロール(<asp:Silverlight>タグ)が使える。この場合は、<asp:Silverlight>タグ内に「OnPluginLoaded="onSilverlightLoaded"」(下記のコードの太字部分)を追記すればよい。
ちなみにOnPluginLoaded属性のほかに、loaded属性もあるが、こちらはサーバ・コントロールのロード時にサーバサイドで処理を行うためのものだ。一方、OnPluginLoaded属性は、クライアント側のJavaScriptコードで処理を行うためのもの。
|
|
Silverlightコントロールのロード・イベントとJavaScript関数を関連付けるASP.NETコード |
■JavaScriptコードによるLoadedイベント・ハンドリング
上記のいずれの実装でも、「onSilverlightLoaded」という名前のJavaScriptコードの関数が呼び出される。従って、次の例のようにonSilverlightLoaded関数内に目的の処理を記述すればよい。
|
|
Silverlightコントロールのロード時に実行されるJavaScriptコードの関数 |
このコード例では、IDが「sl_loaded」の要素のHTMLコードを書き換えている。その要素は、例えば次のように記述すればよい。
|
|
Silverlightコントロールのロード時に実行されるJavaScriptコードの関数 |
ロード時に呼び出される関数のパラメータ(仮引数)には、senderとargsがある。
senderはLoadedイベントを発生させたSilverlightオブジェクトである。このオブジェクトのgetHost関数(パラメータなし)を呼び出せば、Silverlightコントロールのオブジェクト、つまりSilverlightHostクラス(System.Windows.Interop名前空間)のオブジェクトを取得できるので、そこからSilverlightコントロールの情報を取得/設定したり、オブジェクトを操作したりできる。
一方、argsにはイベントの引数が渡されるが、Loadedイベントではnullのため(ちなみに、ほとんどのSilverlightイベントでargsはnull)、argsを省略してもよい。なお、senderを使用しない場合は、これも省略してよい。
カテゴリ:Silverlight 2 処理対象:ブラウザ 使用ライブラリ:SilverlightHostクラス(System.Windows.Interop名前空間) |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|