IE6でjQueryを使う時のエラー:selectにoption生成の不具合
環境
- 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秒、、短すぎ、、