トップ回答者
Windows8環境でのXMLHTTPの動作について

質問
-
javascriptでXMLHTTP(MSXML)を使用して'GET'を実行する場合、Windows8環境で
動作が若干異なっていますが、これはこのように変更されたと理解してよいでしょうか。
具体的に述べますと、XMLHTTPオブジェクトに対して
'GET'でopen()
onreadystatechange指定
send()
のような操作を繰り返した場合、
onreadystatechangeに指定したコールバック関数がWindows8環境のみ
open()のタイミングでも実行されます。他の環境(Windows7等)では
send()実行後にだけ実行されるのですが、Windows8ではこれに加えてopen()時にも実行されます。
回答
-
onreadystatechangeイベントは、readystateの値が変わったタイミングで呼ばれるのであって、
いつ呼ばれるかは時によって変わってもおかしくないと思っています。
syncフラグが同期か非同期かによっても随分変わるようです。
通常は、onreadystatechange時に完了を表すreadystate==4(とステータスコード)を見ることで
余分なイベント発動の影響を避けるようにしていると思うのですが、
アプリ的にはそれで十分なケースがほとんどだという認識です。
open()のタイミングでonreadystatechangeがどのような条件で呼ばれるかは、以下にあるようです。(最後のSTEPまで進めば呼び出すようです)
http://www.w3.org/TR/XMLHttpRequest2/#the-open-method
# IEがどこまで同じ動きをするかは分かりませんが。- 編集済み (´・ω・`) 2013年4月2日 17:13 補足
- 回答の候補に設定 Hebikuzure aka Murachi AkiraMVP, Moderator 2013年4月5日 8:00
- 回答としてマーク 星 睦美 2013年4月11日 4:47
すべての返信
-
フォーラム オペレーターの星 睦美です。
ah_ari さん、投稿ありがとうございます。質問にはInternet Explorer のバージョンに関して書かれていませんが、
「Windows 8 環境」で確認された動作は、"デスクトップ"とスタート画面から起動したInternet Explorer 10の動作ということでよろしいでしょうか?また「他の環境(Windows7等)」で検証されたInternet Explorer のバージョンに関してお知らせいただくと、コミュニティで回答する方に質問の内容が分かりやすくなりそうです。
日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美
-
onreadystatechangeイベントは、readystateの値が変わったタイミングで呼ばれるのであって、
いつ呼ばれるかは時によって変わってもおかしくないと思っています。
syncフラグが同期か非同期かによっても随分変わるようです。
通常は、onreadystatechange時に完了を表すreadystate==4(とステータスコード)を見ることで
余分なイベント発動の影響を避けるようにしていると思うのですが、
アプリ的にはそれで十分なケースがほとんどだという認識です。
open()のタイミングでonreadystatechangeがどのような条件で呼ばれるかは、以下にあるようです。(最後のSTEPまで進めば呼び出すようです)
http://www.w3.org/TR/XMLHttpRequest2/#the-open-method
# IEがどこまで同じ動きをするかは分かりませんが。- 編集済み (´・ω・`) 2013年4月2日 17:13 補足
- 回答の候補に設定 Hebikuzure aka Murachi AkiraMVP, Moderator 2013年4月5日 8:00
- 回答としてマーク 星 睦美 2013年4月11日 4:47