GoogleMaps: 2006年10月アーカイブ: とあるプログラマーの平凡な日記

2006年10月26日

IEで動かない

いませっせとGoogleMapsで表示するためのデータを集めているところ。

データを集めているということはほぼプログラムは完成なのですよ。
んがですね、昨日気がついた。

IEで動かない(--;

ワタクシのデフォルトブラウザはFirefox。なのでそこで動けばいいやー、なんて思っていたからまだ圧倒的シェアの多いIEなんて眼中にありませんでした。

とにかく動かないとサービスにならんので本腰を入れて原因究明に。
以前はまった文字コードは大丈夫。ちゃんとUTF-8で書いてある。

ってことは今回から採用しているV2問題なのかなぁ。
どうやらV1→V2になるに当たって追加されているものが結構あるのだけれども、廃止になるものももあるらしいのよね。そのあたりをまずは探ります。はい。

 :
(解析中)
 :
 :

あのね、エラーとして出ていたのは下の部分たちなのだ。


for (var i= 0; i < rows.length; i++){
item = rows[i].split(",")[0];
itype = rows[i].split(",")[1];

}

この"item"、実は宣言(var)していない(爆)
普通に使っているだけ。

まさかなー、まさかなー(汗)と思いつつ


var item;
var itype;
for (var i= 0; i < rows.length; i++){
item = rows[i].split(",")[0];
itype = rows[i].split(",")[1];

}

動いた・・・(汗)

そうか、そうですか。ちゃんと宣言しないといけないのね。
この点についてはFirefoxは柔軟なんだなぁ。


あと調べて判ったことは、どうやらワタクシのような超初心者的ミス以外にもIEで動かないというパターンがあるらしい。

それの回避方法として初期動作関連を全て~にfunction load()って感じで1つの関数にまとめる。
そしてonLoadイベントでその関数を読み込んで初期動作を動かすっていうパターンがいいらしい。
(http://jsgt.org/mt/archives/01/001038.htmlより)

念のため関数にまとめる方法とまとめない方法で試してみたところ、ワタクシが作ったものに関してはどちらも動いた。
だけど今後のことも考えると(基本的にソースはコピーで使いまわす人なので)まとめる形で使う方向に決定。

はー、まずはIEとFirefoxは動いたと。あとはOperaだなぁ。週末にインストールでもするか。