protected void Page_Load(object sender, EventArgs e) { this.TextBox1.Focus(); }
これはサーバーサイドでフォーカスを直接当てているのではなく、次の工程を経ているようです。
1.サーバーサイドでフォーカスを行うための JavaScript を生成
2.クライアントサイドで JavaScript を読み込み
3.JavaScript の呼び出し
出力されている HTML を見てみると、WebForm_AutoFocus メソッドが ASP.NET によって自動生成されています。
<script type="text/javascript"> //<![CDATA[ WebForm_AutoFocus('TextBox1');//]]> </script>
WebForm_AutoFocus は ASP.NET が生成する axd の中に記述がありました。確かにこの中を読むと引数で渡されたコントロールにフォーカスを設定しています。
function WebForm_AutoFocus(focusId) { var targetControl; if (__nonMSDOMBrowser) { targetControl = document.getElementById(focusId); } else { targetControl = document.all[focusId]; } var focused = targetControl; if (targetControl && (!WebForm_CanFocus(targetControl)) ) { focused = WebForm_FindFirstFocusableChild(targetControl); } if (focused) { try { focused.focus(); if (__nonMSDOMBrowser) { focused.scrollIntoView(false); } if (window.__smartNav) { window.__smartNav.ae = focused.id; } } catch (e) { } } }
Client-Side Enhancements in ASP.NET 2.0
http://aspnet.4guysfromrolla.com/articles/111506-1.aspx
0 件のコメント:
コメントを投稿