Home > 技術 > jQueryがIEでもローカルファイルにAjaxでアクセスできる理由

jQueryがIEでもローカルファイルにAjaxでアクセスできる理由

前にJavaScriptでローカルファイルにアクセスする方法でPrototype.jsではIEでローカルファイルにアクセスできないが、jQueryだとうまくいくというエントリーを書きました。

んでいまいちなんでか分からなかったのでjQueryのAjax部分を見てみました。

jQueryで簡単にAjaxコード

まずはjQueryでAjaxを使う方法。

大体こんな感じです。すんごい簡単で相変わらずビックリします!

では内部へ・・・

jquery1.2.6.js(2733行目)

ここにあるonreadystatechange変数に秘密が隠されていました。

普通onreadystatechangeに関数をセットする場合は、IEではActiveXObjectのMicrosoft.XMLHTTPが持つonreadystatechangeにセットすると思いますが、なぜかここでは変数に格納しています。

一方prototype.jsでは

とMicrosoft.XMLHTTPが持つonreadystatechangeにセットしています。
ここが大きく違いますね。

jQueryのほうではonreadystatechangeにセットされた関数をsetIntervalを使って監視しています。
そしてreadyStateが「4 = complete」になったときに処理を開始するようにしているようです。

これによりローカルファイルにもアクセスが可能になっているようです。
でもなんでこれでローカルファイルにアクセスできるんでしょうw
すげっ

上記の部分をふまえてjQueryよりもうちょい簡単にしたバージョンを載せておきます。
参考程度にどうぞ。

jQueryのAjax部分の簡易版

これを見ていてひとつ気になったのが、jQueryではMicrosoft.XMLHTTPを使っていますが、
どうしてMsxml2.XMLHTTPは使っていないのでしょう。
確かMsxml2.XMLHTTPのほうがパフォーマンスが良かったような気が・・・
これも要調査ですな!

■関連リンク
XMLHttpRequest - MDC
The XMLHttpRequest Object
解説 : XMLHttpRequest

【関連する記事】

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Trackback:0

TrackBack URL for this entry
http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1087
Listed below are links to weblogs that reference
jQueryがIEでもローカルファイルにAjaxでアクセスできる理由 from HouseTect, JavaScripter Blog

Home > 技術 > jQueryがIEでもローカルファイルにAjaxでアクセスできる理由

Tag cloud
Categories
月別アーカイブ
このブログについて
author:hisasann

description:フリーランスで仕事しているプログラマーです。
最近はJavaScript、Rails、Java(Struts+Spring)なんかをいろいろといじっています。
今やってみたいのはFlashやActionScriptかな。
また誕生して半年になる子供の成長を見守るパパでもあります。

日々の日記 :

他に運営しているブログ:

利用しているWebサービス :
最近のコメント
Powered by
Powered by
Movable Type 3.35

Page Top