• 締切済み

doPostBack 関数について

ASP.NET で作成された Web ページ内の __doPostBack 関数についての質問です。 以下のコード(抜粋、左端は行数)において、以下の点が不明ですのでお教え願います。 Q1. 11 行目の記述は何のために必要なのでしょうか? もし、9 行目での theForm オブジェクトの取得が失敗した場合に、11 行目が必要になる というのであれば、最初から 11 行目のみ書いておけばよいと思うのですが。 Q2. 14 行目の if 文の条件について、どちらか一方だけでは何故ダメなのでしょうか? 1 <form name="aspnetForm" method="post" action="Details.aspx" id="aspnetForm"> 2 <div> 3 <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 4 <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 5 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(略)" /> 6 </div> 7 <script type="text/javascript"> 8 <!-- 9 var theForm = document.forms['aspnetForm']; 10 if (!theForm) { 11 theForm = document.aspnetForm; 12 } 13 function __doPostBack(eventTarget, eventArgument) { 14 if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 15 theForm.__EVENTTARGET.value = eventTarget; 16 theForm.__EVENTARGUMENT.value = eventArgument; 17 theForm.submit(); 18 } 19 } 20 // --> 21 </script>

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

バージョンによる違いを吸収するための施策だと 思います。 バージョンによってどちらかしか反応しないことが 想定されているのではないでしょうか? たとえばQ1については11行目ですべてが包含されるなら 問題ないですが、実際には11行目でこぼれる分がある ため、11行目のみを書いてそれを補完するために 9行目を書くということになるでしょう。

chibahiro
質問者

お礼

ご回答ありがとうございます。 なるほど、ブラウザのバージョン差異の吸収が考えられますね。 具体的にどういった場合に必要とされるコードなのか、バージョン差異の観点から調べてみようと思います。

関連するQ&A