IE7でページが開けないバグの対処方

以前よりIE7でCashbookが開けないという報告をいただいていたので、原因を調べてみたところ、ブラウザのバグであることがわかりました。同じ現象で悩んでいる方がいるかもしれないので、対処法をまとめておきます。

ie7_bug.png
サイトにアクセスすると同時にこのようなエラー メッセージが表示される。

マイクロソフト社のサポートページには、

この問題は、子コンテナーの HTML 要素のスクリプト、子コンテナーの親コンテナー要素を変更しようとしているを格納するために発生します。 スクリプトは、 innerHTML メソッドまたは、 appendChild メソッドのいずれかを使用して、親コンテナー要素を変更しようとしました。たとえば、 DIV 要素の BODY 要素に子コンテナーを DIV 要素の SCRIPT ブロック DIV 要素の親コンテナーが BODY 要素を変更しようとする場合、この問題が発生する可能性があります。

とあります。真面目に読めば読むほど、理解できなくなったのですが、試行錯誤し次のように対処しました。

1. innerHTML メソッドを使っている箇所を特定する

Cashbookの場合、右カラムの「News & Info」のところで利用しているTwitterウィジェットで使っていました。

2. scriptタグをbody要素の子になっているdivから出す

<body>
<div id="wrapper">
•••
<ul id="twitter_update_list"></ul>
<script type="text/javascript" src="http://twitter.com/favorites/Cashbook.json?callback=twitterCallback2&count=1"></script>
•••
</div>
</body>

上のものを以下のように変更。

<body>
<div id="wrapper">
•••
<ul id="twitter_update_list"></ul>
•••
</div>
<script type="text/javascript" src="http://twitter.com/favorites/Cashbook.json?callback=twitterCallback2&count=1"></script>
</body>

以上で無事解決することができました。

<参考記事>
IE7でブログが開けないバグを修正しました

Related Entry


About this entry

Cashbook