2008年11月22日土曜日

jQuery + IE6 ではまった

Ajax で json を取得して json で持っている HTML 要素と入れ替えようとしたときに
IE6 でだけどうしても重くて仕方なかった。

コードはこんな感じ

function(json){
var html = $(json.html);
$('#main').empty().append(html);
}
#json は HTML のほかにいろいろ入っている

html が小さければ特に問題ないけれども、ある程度以上のHTMLを挿入しようとすると
とたんに重くなってずっと悩んでいた。
#実際 Firefox だと 400ms なところが、IE だと12000ms くらいかかる。

empty が重いのか? append が重いのか?と悩んでいたが、重かったのは $(json.html) の部分。

以下のようにして解決。コードもすっきり。
function(json){
$('#main').html(json.html);
}

それでも大きい HTML だと 1000ms くらいかかるけど、もう仕方ないかなぁ