コードビハインドの Focus メソッドと WebForm_AutoFocus メソッド
ASP.NET のコードビハインドで下記コードを呼び出すと、出力結果の TextBox にはフォーカスが設定されています。
protected void Page_Load(object sender, EventArgs e){ this.TextBox1.Focus();}これはサーバーサイドでフォーカスを直接当てているのではなく、次の工程を経ているようです。
- サーバーサイドでフォーカスを行うための JavaScript を生成
- クライアントサイドで JavaScript を読み込み
- 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
💬 コメント