2007年6月5日火曜日

IEで「操作は中断されました」のエラー

今、作っているjavascriptを直していたら突如IEだけで「操作は中断されました」とエラーの表示がでるようになった。firefoxでは出ないのになぜー!と叫びつついろいろ原因をほっていったらappendChildが悪さをしているらしい。

これは推測だがどうやらdivなんかの中で新たにappendChildを使ってbodyに新しいdivをインサートしようとすると怒られているらしい。まったくもうIEなんかやめてみんなfirefoxにしようぜと思いつつしばし解決策を考える

んで結局はIE固有のdocument.onreadystatechangeを使って解決した。
ご存知のようにdocument.onreadystatechangeはドキュメントの読み込みの状態を示していて読み終わるとステータスがcompliteになる。
だから

if (document.all) {
document.onreadystatechange = function () {
if (this.readyState == "complete") {
やりたい処理
}
}
} else {
やりたい処理、IE以外ではすぐ呼び出す
}

という感じで呼んで、読み込みが終わってからappendするようにすると、ほっ、無事動きました。

しかし、こんな現象こないだまでなかったような気がする。
知らない間になんかwindowsがいじったのか?なぞだ

0 件のコメント: