#jquery javascript ie

環境

  • IE6
  • jQuery1.3.2

現象

IE7、IE8、Firefox上全部OKのアプリがなぜかIE6ではエラーが頻発しました。 エラーの詳細もないので、原因がはっきりわかりません。
ソースは特に変な作り方をしてないと思うので、やはりIE6が主な原因と判断しググってみました。

調査結果

IE6でselect boxに<option>を追加した直後、 その追加した値を.valで設定しようとすると上記のエラーが発生します。 (設定する値が追加した値以外の場合、正常に設定できます)

今回のアプリではselectボックスは静的にHTMLで書いて、 jQueryでoptionをどんどんappendしてました。 やはりこの辺が怪しかったですね。
回避策としてあげられるのは.valを設定する前に.width()を一回実行することです。 信じられないぐらい、本当になおりました。 setTimeout(function () {}, 0); も回避策の一つとの選択肢もあったのですが、 なぜかこれは効きませんでした。

以下個人感想

IE6のばかばかしい動きが元凶なので、詳しく追求する気はないです。 ほかにもjQueryを使うときに注意すべきものがいっぱいあるようです。 まあ、またエラーなんか起きたらそのときまた検索すればって思います。
ウェブアプリ開発者はIE6~IE8、Firefoxなどいろいろなブラウザにも注意しながら 開発するしかないことがすごく嫌です。 この前FirefoxがやっとIE6を市場シェアを抜けて一位になった記事がありました。 (Firefox > IE6 > IE7 > IE8の感じかな、トータルではもちろIE全体がまだトップ) IE6なんかもう早く下がってほしい。
なので、ブラウザに気にしないFlex開発に興味を持ち、今勉強中です。 そこら辺の感想はまた別途で記事書きます。
ちなみに、Google分析で私のブログを見る平均時間は44秒です。 内容的にこんなに駄目なんですか。。? 44秒、、短すぎ、、

参考になったサイト