おれのIT日記
2002/11/15 (金)
IE
JScriptの謎
J(ava)Scriptで何かを作るのは本当に疲れる。しかもばかばかしい。なぜかというと、不安定極まり無いし、理屈に合わない動作をするし、しかも再現性がない。
だからこんな仕事はもうしたくなかったのだが、事情により、また関わることになった。もうやる前からウンザリだ。ほとんど忘れてるし。いや。意識的に忘れたのだ! こんなものに、残り少ない脳細胞を使うのは人生の浪費である。例えば、変数を数値で初期化すると、文字列として評価した時に、> 0 にならないのだ...つい、Perlと同じに違いないと決めつけていた。以前も、同じところではまった気がする。
だが、そーゆー言語仕様の違い程度ならいいのだが、とにかく訳がわからない動作をする*ときがある*。いつも訳のわからない動作をしてくれればいいのに。
昔ぼくの持っていたプレーヤーは、電気屋を呼ぶと直った。電気屋が「まったくがきが...」という顔をして、舌打ちして帰ると、途端にまた壊れた。それと同じだ。
再現性のあるところでは、こんなのを見つけた。IE5.5SP1、SP2とも同じなんだが、onSubmitのイベントハンドラでfalseを返した後、FORMの各要素に名前でアクセスしようとすると、nullになってる、というものだ。例えば、
formRegistInput.MemberName.value
と書いていたところが、onSubmitの処理後、nullになってしまってスクリプトエラーを起こす。こんなことはどの本を見ても書いてないが、事実そうなるので、仕方がない。せっかく名前をつけたのに、そっちは使うのをやめて、
formRegistInput.elements[xx].value
という風に、elements配列に添字アクセスして、しのぐことにする。項目を追加削除するたびに添字が変わるんだから、メンテ性が悪いったらありゃしない。
一事が万事この調子のうえ、まともなデバッガが無い。だから、共通ルーチンをサブルーチンにくくり出すと、後でデバッグに苦労する(エラーの発生した行数がうまく表示されなくなることが多いから)と思って、同じようなコードでも、決して必要以上にまとめない。似たようなコードを切り貼りして、ブラウザが表示する行数だけでデバッグ個所を突き止められるような、冗長なコードを作ることにしている。
とにかく疲れる。
IEの、サーバにアクセスしたふりして、実はキャッシュを表示するという謎の動作にも悩まされるし、checkboxのおかしな振る舞いにも苦しめられる。独りで取り組んでると、神経衰弱になりそうだ。こういうのは、なるべく数人で仕事したい。