2009年11月 9日

IE6でjQueryを使う時のエラー:selectにoption生成の不具合

環境

現象

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秒、、短すぎ、、

参考になったサイト

Share on Twitter Share the post
Qihuan Piao

朴 起煥

東京で働いている「外人歴」9年のソフトウェア「ライター」。いつの間にか納豆が食えるようになり、これで日本に慣れきったと思いきやまだまだ驚きが続いてる。読んだり書いたりするのが好きで、自身の経験や本から得た「何か」をここに書き出してる。最近古本屋にハマってる。

他にも英語中国語で書いてます、よろしければチェックしてみてください。