C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: イベント発生順について


(過去ログ 14 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■4949 / inTopicNo.1)  イベント発生順について
  
□投稿者/ ちぃ (9回)-(2007/06/29(Fri) 12:10:43)

分類:[C# (ASP.NET)] 

いつもお世話になっております。よろしくおねがいします。

ASP.NET(C#)で開発をしています。
テキストボックス
(AutoPostBack=true、TextChangeイベントを発生させる)が、画面上にあります。

初期表示時には、このテキストボックスにフォーカスをおくよう、JavaScriptで制御しています。
また、ページロード時に、テキストボックス.Attributes.Add("onblur", "function名()"); を設定しています。

デバッグするときに、以下の場所にブレークポイントを置きました。
・jsファイルのfunction
・Page_Load
・Pre_Render
・TextChange

テキストボックスに入力した後、Tabキーで次のコントロールへ移動するときに、
・Page_Load
・jsファイルのfunction
・TextChange
・Pre_Render
の順でブレークポイントが止まりました。
以上は、VS2003(Framework1.1)で開発しています。

それを最近VS2005(Framework2.0)にコンバートし、デバッグを行ったところ、
・jsファイルのfunction
・Page_Load
・TextChange
・Pre_Render
の順でブレークポイントが止まりました。

どちらの発生順が正しいのでしょうか、それともデバッグの仕方に問題があるのでしょうか。
情報をお持ちの方、ご教授お願いします。


引用返信 編集キー/
■4950 / inTopicNo.2)  Re[1]: イベント発生順について
□投稿者/ 囚人 (114回)-(2007/06/29(Fri) 12:45:28)
javascript はクライアントで実行。Page のイベントはサーバで実行。従って、両者を同一視してはいけません。
強いて言うなら、javascript はレスポンス後に有効になるものなので、

・Page_Load
・TextChange
・Pre_Render
・jsファイルのfunction

かな?または

・jsファイルのfunction
・Page_Load
・TextChange
・Pre_Render

という場合も。
引用返信 編集キー/
■4952 / inTopicNo.3)  Re[2]: イベント発生順について
□投稿者/ ちぃ (10回)-(2007/06/29(Fri) 13:11:23)
早速の返信ありがとうございます。
> javascript はクライアントで実行。Page のイベントはサーバで実行。従って、両者を同一視してはいけません。
この部分に関しては、理解できております。

> 強いて言うなら、javascript はレスポンス後に有効になるものなので、
>
> ・Page_Load
> ・TextChange
> ・Pre_Render
> ・jsファイルのfunction
>
> かな?または
>
> ・jsファイルのfunction
> ・Page_Load
> ・TextChange
> ・Pre_Render
>
> という場合も。

ということは、今回
・Page_Load
・jsファイルのfunction
・TextChange
・Pre_Render
の順でブレークポイントが止まったのはなぜでしょうか?
JavaScriptのデバッグは必ずしも期待する順番でブレークするとは限らない
ということでしょうか?
私が見当違いなことを言っているのでしたら、すいません(自信がないもので)。
引用返信 編集キー/
■4953 / inTopicNo.4)  Re[3]: イベント発生順について
□投稿者/ 囚人 (115回)-(2007/06/29(Fri) 13:24:19)
>・Page_Load
>・jsファイルのfunction
>・TextChange
>・Pre_Render
>の順でブレークポイントが止まったのはなぜでしょうか?
>JavaScriptのデバッグは必ずしも期待する順番でブレークするとは限らない
>ということでしょうか?

必ず上記の順でブレークされる理由はわかりませんが(多分たまたま)、全く別の二つのアプリケーションを同時にデバッグしているのと同義、と考えれば何となく分かるでしょうか?

引用返信 編集キー/
■4960 / inTopicNo.5)  Re[4]: イベント発生順について
□投稿者/ ちぃ (11回)-(2007/06/29(Fri) 14:20:19)
返信ありがとうございます。

No4953 (囚人 さん) に返信
> >・Page_Load
> >・jsファイルのfunction
> >・TextChange
> >・Pre_Render
> >の順でブレークポイントが止まったのはなぜでしょうか?
> >JavaScriptのデバッグは必ずしも期待する順番でブレークするとは限らない
> >ということでしょうか?
>
> 必ず上記の順でブレークされる理由はわかりませんが(多分たまたま)、全く別の二つのアプリケーションを同時にデバッグしているのと同義、と考えれば何となく分かるでしょうか?
>

デバッグしないで実行した場合、最初に囚人様が教えていただいた

「1」
・Page_Load
・TextChange
・Pre_Render
・jsファイルのfunction
または
「2」
・jsファイルのfunction
・Page_Load
・TextChange
・Pre_Render
の順でイベントが発生しているが、デバッグではたまたま、それとは違う順でブレークしているという認識で
よいでしょうか?

不思議なんですが、
これまでの環境(Framework1.1、OSはXP)でのイベント順と、
コンバート後(Framework2.0、OSはVista)でのイベント順がどうも違うらしく、
このイベント発生順の違いが原因と思われる不具合がコンバート後に発生しており、どう対応するか悩んでいます。
なんとなくですが、
これまでは、「1」の順、コンバート後は「2」の順で発生しているような気がします。

引用返信 編集キー/
■4967 / inTopicNo.6)  Re[5]: イベント発生順について
□投稿者/ 囚人 (116回)-(2007/06/29(Fri) 15:06:38)
以下は、提示された情報だけに限定して述べる処理順序です。

(1)ブラウザがサーバにリクエストする。GET
(2)サーバが Page を生成する。Page_Load → Pre_Render の順で実行される。
(3)ブラウザがレスポンスを受け取る。
(4)テキストボックスからフォーカスが外れたならば、function 実行。
(5)ブラウザがサーバにリクエストする。POST
(6)サーバが Page を生成する。Page_Load → TextChanged→Pre_Render の順で実行される。
(7)ブラウザがレスポンスを受け取る
(8)テキストボックスからフォーカスが外れたならば、function 実行。


これで分かりますか?
引用返信 編集キー/
■4970 / inTopicNo.7)  Re[6]: イベント発生順について
□投稿者/ ちぃ (12回)-(2007/06/29(Fri) 15:32:32)
ありがとうございます。

No4967 (囚人 さん) に返信
> 以下は、提示された情報だけに限定して述べる処理順序です。
>
> (1)ブラウザがサーバにリクエストする。GET
> (2)サーバが Page を生成する。Page_Load → Pre_Render の順で実行される。
> (3)ブラウザがレスポンスを受け取る。
> (4)テキストボックスからフォーカスが外れたならば、function 実行。
> (5)ブラウザがサーバにリクエストする。POST
> (6)サーバが Page を生成する。Page_Load → TextChanged→Pre_Render の順で実行される。
> (7)ブラウザがレスポンスを受け取る
> (8)テキストボックスからフォーカスが外れたならば、function 実行。
> …
>
> これで分かりますか?

一番最初にページを表示するときに(1)〜(3)が実行され、
たとえばTabキーを押して、テキストボックスからフォーカスが外れたら、(4)functionが実行される。
その後、サーバにPOSTして(5)〜(7)が実行され、ページが再表示された状態になる。
そしてまた、テキストボックスからフォーカスが外れれば、(4)〜(7)の順で処理される
ってことですよね。

フォーカスが外れたあと、(5)(6)(7)(4)の順で動いたりとかあり得ませんよね・・・
同じソースなのに、
さも、(5)(6)(7)(4)の順で動いるような結果と、上記どおりに動いている結果が得られています。
もう少しソースを精査してみます。

引用返信 編集キー/
■4980 / inTopicNo.8)  Re[7]: イベント発生順について
□投稿者/ Jitta (365回)-(2007/06/29(Fri) 20:29:52)
見始めるところがちがうとか?
ブレークすることで、順番が変わることは考えられます。
(別のアプリですからね)

ところで、具体的に、何が問題なのでしょう?
どういう現象があり、どういう調査をしたところ、どういう結果が得られ、どう考えて、イベントの発生順序が原因と考えたのでしょう?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -