ページ

2009年5月26日火曜日

[Silverlight] ブラウザにログ出力

Silverlight Logging Extension Method より
「Silverlight はブラウザ上で動くので Console.WriteLine() はできません。System.Diagnostics.Debug.WriteLine() は Visual Studio のアウトプットウインドウに出力されます。けど、デプロイした後や VS が無いような場合に簡単にログ出力できません」
てな感じで、そんなときに使える console.log 関数が紹介されています。

Firefox に Firebug が入れてあれば

<script type="text/javascript">
console.log("test");
</script>

なんてすると Firebug の Console に出力されます。
知らなかったんですが、上記の記事によると console.log 関数は IE8 でもサポートされているみたいです。
で、上記記事では console.log 関数を Silverlight から呼び出す方法が紹介されています。

var console = (HtmlPage.Window.Eval("console.log") as ScriptObject);
if (console != null)
{
console.InvokeSelf(obj);
}

Eval で “console.log” を評価させて function を取得してるんですね。
なるほどなぁ。
GetProperty でオブジェクトをたどりながら取得するっていうのが普通の方法じゃないかと思いますが、Eval で評価させちゃうってのは楽チンでいいですね。オーバーヘッドはちょっと大きそうですが。


0 件のコメント:

コメントを投稿