- 2008-08-07 (木)
- 技術
前に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
【関連する記事】
- Newer: そり犬と遊ぶ白クマがすんごくかわいい
- Older: bean:writeのfilter属性をfalseにした場合の挙動を追う
Comments:0
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

