none
Windows8環境でのXMLHTTPの動作について RRS feed

  • 質問

  • javascriptでXMLHTTP(MSXML)を使用して'GET'を実行する場合、Windows8環境で
    動作が若干異なっていますが、これはこのように変更されたと理解してよいでしょうか。

    具体的に述べますと、XMLHTTPオブジェクトに対して

    'GET'でopen()
    onreadystatechange指定
    send()

    のような操作を繰り返した場合、
    onreadystatechangeに指定したコールバック関数がWindows8環境のみ
    open()のタイミングでも実行されます。他の環境(Windows7等)では
    send()実行後にだけ実行されるのですが、Windows8ではこれに加えてopen()時にも実行されます。
    2013年4月1日 7:47

回答

  • onreadystatechangeイベントは、readystateの値が変わったタイミングで呼ばれるのであって、
    いつ呼ばれるかは時によって変わってもおかしくないと思っています。
    syncフラグが同期か非同期かによっても随分変わるようです。
     
    通常は、onreadystatechange時に完了を表すreadystate==4(とステータスコード)を見ることで
    余分なイベント発動の影響を避けるようにしていると思うのですが、
    アプリ的にはそれで十分なケースがほとんどだという認識です。
     
    open()のタイミングでonreadystatechangeがどのような条件で呼ばれるかは、以下にあるようです。(最後のSTEPまで進めば呼び出すようです)
    http://www.w3.org/TR/XMLHttpRequest2/#the-open-method
    # IEがどこまで同じ動きをするかは分かりませんが。
    2013年4月2日 17:07

すべての返信

  • フォーラム オペレーターの星 睦美です。
    ah_ari さん、投稿ありがとうございます。

    質問にはInternet Explorer のバージョンに関して書かれていませんが、
    「Windows 8 環境」で確認された動作は、"デスクトップ"とスタート画面から起動したInternet Explorer 10の動作ということでよろしいでしょうか?

    また「他の環境(Windows7等)」で検証されたInternet Explorer のバージョンに関してお知らせいただくと、コミュニティで回答する方に質問の内容が分かりやすくなりそうです。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美

    2013年4月2日 5:08
  • 星様、返信ありがとうございます。

    環境について補足いたします。
    Windows8はIE10環境です。
    Windows7ではIE8,9,および10で確認いたしましたが、
    onreadystatechangeに指定したコールバックが実行されるタイミングという点では
    同じでした(つまりsend()後にだけ実行されます)。

    以上、よろしくお願いいたします。

    2013年4月2日 11:50
  • onreadystatechangeイベントは、readystateの値が変わったタイミングで呼ばれるのであって、
    いつ呼ばれるかは時によって変わってもおかしくないと思っています。
    syncフラグが同期か非同期かによっても随分変わるようです。
     
    通常は、onreadystatechange時に完了を表すreadystate==4(とステータスコード)を見ることで
    余分なイベント発動の影響を避けるようにしていると思うのですが、
    アプリ的にはそれで十分なケースがほとんどだという認識です。
     
    open()のタイミングでonreadystatechangeがどのような条件で呼ばれるかは、以下にあるようです。(最後のSTEPまで進めば呼び出すようです)
    http://www.w3.org/TR/XMLHttpRequest2/#the-open-method
    # IEがどこまで同じ動きをするかは分かりませんが。
    2013年4月2日 17:07
  • フォーラム オペレーターの星 睦美です。
    ah_ari さん、こんにちは

    その後の質問がありませんので、今回は(´・ω・`)さんの回答が参考になったのではないかと思います。
    コミュニティで役立つ回答として、私から[回答としてマーク] させていただきました。

    これからもInternet Explorer フォーラムをお役立てください。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美


    • 編集済み 星 睦美 2013年4月11日 4:48 編集
    2013年4月11日 4:47