- 2010-01-27 (水)
- 技術
ここ最近フロントエンドのパフォーマンスチェックでHttpWatchを使っているんですが、これはかなり調子がいい!
特にインストールするとIEとFirefoxに追加され、Firebugのように画面の下のほうに表示されるので違和感なく使えます。
んで、このソフトを使ってサイトのパフォーマンスチェックをしていたら、IEの場合だけ
「ERROR_INTERNET_INVALID_URL」
というRequestの結果が返ってきて、これってなんだろうと調べてみたら、jQuery・prototype.js・YUIを使っている場合に
IEでDomContentLoaded(DCL)判定するときに発生しているようです。
これでだいたい3〜6ミリ秒のオーバヘッドがあるよう。
ほんのちょびっとですがねw
jQueryの場合(ver1.2.1)
bindReady関数の中にIEだったらという分岐があり、その中でsrc=//:なscriptタグをdocument.writeしているのが原因。
このscriptがdocument.writeされたタイミングでsrc属性のURLをGETする際に、よくわからんURLじゃ〜と言っているんでしょうね。
jQueryがこの判定方法を使っているのはおそらく1.2.1以前だと思うので、1.2.6や1.3.X、または1.4を使っている場合は問題ありません。
ちなみに1.4のDCLの判定は以下のようになっています。
onreadystatechangeとonload、あとは今までにもあったdoScrollで判定しているようです。
prototype.jsの場合(1.6)
このprototype.jsを使っている場合が、今回のERROR_INTERNET_INVALID_URLなRequestを送信してしまうパターンになります。
実際のコードは以下のとおり。


