2009年11月 9日 #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秒、、短すぎ、、

参考になったサイト